唐巧的博客

唐巧的博客

记录下自己学习的点滴

谈ObjC对象的两段构造模式

前言

Objective-c 语言在申请对象的时,需要使用两段构造 (Two Stage Creation) 的模式。一个对象的创建,需要先调用 alloc 方法或 allocWithZone 方法,再调用 init 方法或 initWithSomething 方法。如下是一个 NSString 对象的创建示例:

NSString * str = [[NSString alloc] initWithString:@"http://blog.devtang.com"];

由于该语言的对象创建方法和大多数其它语言(如 C、C++、Java、JavaScript)都不一样,所以引起了我的好奇。是什么原因促使 Objective-C 做了这种设计,而又是什么原因促使大多数其它语言都采用 “new” 方法来一次性创建对象呢?

在看了 《Cocoa Design Patterns》 一书(顺便吐槽一下该书中文版翻译质量不高,建议看英文版),并且做了一些调研之后,我将总结分享给大家,欢迎大家讨论。

StoryBoard--看上去很美

介绍

StoryBoard 是苹果在 2011 年的 WWDC Session 309《Introducing Interface Builder Storyboarding》中介绍的 Interface Builder 的新功能。其基本想法是将原本的 xib 进行升级,引入一个容器用于管理多个 xib 文件,并且这个容器可以通过拖拽设置 xib 之间的界面跳转。而这个容器就是被苹果称做的 StoryBoard。下图是一个 Storyboard 的截图。

关于IAP的破解

介绍

大概在今年7月份,有俄罗斯黑客破解了苹果的应用内付费(In-App Purchases),设备在不越狱的情况下就可以免费获得来自苹果官网App Store里应用的收费道具。受影响的产品众多,包括著名的Angry Birds,切水果,Mega Jump, Pandora等。这里有一份受影响的著名的游戏应用列表。

正常的越狱行为还是比较复杂的,需要下载破解软件,并且操作进入DFU模式,所以大部分人并不能够方便地越狱。但该方案不需要越狱就可以破解应用内付费,给用户实施该行为提供了方便。

iOS应用内付费(IAP)开发步骤列表

前两天和服务端同事一起,完成了应用内付费(以下简称IAP, In app purchase)的开发工作。步骤繁多,在此把开发步骤列表整理如下。因为只是步骤列表,所以并不含详细的说明教程,需要看教程的新手,可以看我附在最后的一些参考链接。

让Xcode的 stack trace信息可读

昨天在写 iOS 代码的时候,调试的时候模拟器崩溃了。异常停在了如下整个 main 函数的入口处:

int main(int argc, char *argv[])
{
@autoreleasepool {
// 异常停在了下面这行,毫无提示作用
return UIApplicationMain(argc, argv, nil, NSStringFromClass([MyClass class]));
}
}

改进iOS客户端的升级提醒功能

功能设计

先申明一下,我是码农,不是一个产品经理,但我觉得现有市面上的很多 App,设计的 “升级提示功能” 都不太友好。在此分享一下我的想法,欢迎大家讨论。

这些 App 包括:新浪微博、网易微博、网易新闻客户端以及大部分带有升级提示功能的 App,所以我觉得这个问题还是挺普遍的。对于该问题,一句话描述起来就是:“这些 App 都会在用户刚刚使用它的时候,提示有新版本,让用户去 AppStore 上下载最新的版本”。下面是某个应用的升级提示截图:

为什么我认为这是一个糟糕的设计呢?因为用户刚刚打开你的 App,明显就是想使用你的功能。例如刚刚打开新浪微博,可能就是想看一下最新的消息或回复。刚刚打开网易新闻客户端,可能就是想看看最新的新闻。这个时候,你告诉用户有新版本,是想让用户暂时放弃使用该 App 吗?我不知道有多少用户会去点 “升级” 这个按钮,反正我每次看到这个提示都很郁闷,因为我如果点了,我就暂时不能使用该应用了(升级时原版本的 App 是无法使用的)。所以我在想,这个提示升级的时间能不能做得更友好一些?

在MacOS和iOS系统中使用OpenCV

前言

OpenCV 是一个开源的跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法。

最近试着在 MacOS 和 iOS 上使用 OpenCV,发现网上关于在 MacOS 和 iOS 上搭建 OpenCV 的资料很少。好不容易搜到些资料,却发现由于 OpenCV 和 Xcode 的版本更新,变得不再有用了。有些问题费了我很多时间,在此总结分享给大家,希望后来人少走些弯路。

可以预见到,随着 Xcode 和 OpenCV 的版本更新,本文可能不再有效了。

所以特此注明,文本介绍的搭建方法仅针对于 Xcode4.5.1 和 OpenCV 2.4.2 版本。

(2013-6-22)更新: 我在 Xcode4.6.2 和 OpenCV 2.4.5 版本的时候重新进行了一次环境搭建,以下内容做了相应调整,应该也是有效的。

粉笔网的架构和项目管理
10 月 10 日,在 CMDN 炫姐姐 的邀请下,我们粉笔网团队通过 CSDN 的 CMDN Club, 对外进行了第一次 技术分享。分享的内容主要包括 2 部分: 第一部分是关于粉笔网使用 ...
谈谈我的创业感受

5 个程序员,3 个多月时间,30 多万行代码,1000 个 bug,只为打造卓越产品。

开发历程

先简单介绍一下产品。我们的产品叫 “粉笔网”,这是一个新颖的学习社区。我们公司的创始人是前网易高管 李勇。我们团队从 4 月份开始筹备,5 月份开始工作,整个开发历经 3 个多月,其中网站于 8 月 28 号顺利上线,iPhone 客户端Android 客户端 于 9 月 8 日顺利通过审核上线。

avatar
唐巧
一个中年程序员,正在努力学习做业务