Swift 之 ? 和 !

· iOS

Swift 语言使用 var 定义变量,但和别的语言不同,Swift 里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化。如果在使用变量之前不进行初始化就会报错: 12345var stringValue : String//error: variable 'stringValue' used before being initialized//let has...

Read More →
#Swift

Run loop 和 Thread

· iOS

Run-loop 是什么?首先考虑这个问题:你的 Cocoa 程序大部分的时间什么都没做,更具体点,是在等待输入。然而,一旦你触摸屏幕,相应的事件被触发,就可能会执行你的一段事件处理代码。同理,socket 中返回一些数据,或者计时器触发等也是一样的情况。而且更重要的是,一旦触发事件的代码执行完,程序就会回到等待状态。在很多情况下,代码执行的时间要远小于程序等待输入的时间。 我认为 run loo...

Read More →
#iOS

使用 Theos 做一个简单的 Mobile Substrate Tweak

· iOS

Mobile Substrate 和 TheosMobile Substrate 是 Cydia 的作者 Jay Freeman (@saurik) 的另外一个牛 X 的作品,也叫 Cydia Substrate, 它的主要功能是 hook 某个 App,修改代码比如替换其中方法的实现,Cydia 上的 tweak 都是基于 Mobile Substrate 实现的。目前支持 iOS 和 Andr...

Read More →
#iOS #jailbreak

Background Fetch

· iOS

Background Fetch 是 iOS7 带来的非常 Cool 的新特性,开启 Background Fetch 的 App 会被系统在合适的时机执行后台任务的代码。比如这个场景:你每天晚上 10 点会通过自己的 RSS 阅读器 App 来阅读,系统可能会在 10 点之前执行 App 中设定的下载 RSS 最新资源的任务,当你打开 RSS 阅读器 App 的时候就显示出最新的内容。实现 Ba...

Read More →
#iOS

轻量级 KVO [译]

· iOS

在这篇文章中,我会实现一个自己用的简单 KVO 类,我认为 KVO 非常棒,然而对于我大部分的使用场景来说,有这两个问题: 我不喜欢在observeValueForKeyPath:ofObject:change:context:方法里通过 keyPath 值来做调度,当 Observe 比较多的对象时,会使得代码变得杂乱和迷惑。 必须手动的来注册和删除一个观察者,如果能自动做就好了。 So...

Read More →
#iOS

AppCode JVM 参数优化

昨晚花了 2 个小时熟悉了一下 AppCode, 和 IDEA 系列给人的感觉一样:很卡很强大。就打算优化一下 JVM 的设置,AppCode 的 JVM 参数配置文件在 /Applications/AppCode EAP.app/bin/idea.vmoptions 使用默认的参数,用一段 AppCode,观察了一下 GC 的情况: ➜ ~ jstat -gcutil 50991 1s ...

Read More →

如何在一个设备上安装一个 App 的两个不同版本

· iOS

最近干了件蠢事,事情是这样的,我们 App 有 2 套图标,一套是测试版图标用于发布 OTA 的内部测试版,一套是正式版用于发布到 AppStore,每次打包,我都会检查图标,结果上次粗心搞错了,把测试版的图标打包发布到 AppStore 了,发现之后想死的心都有了。马上修改了一版,申请紧急审核,结果你可能猜到了,没有通过。这是个很大的教训,像这一类的手动来改都不靠谱,毕竟有忘掉的概率存在,能不能...

Read More →
#iOS

NSOperation

· iOS

几乎每个开发者都知道,让 App 快速响应的秘诀是把耗时的计算丢到后台线异步去做。于是,Modern Objective-C 开发者有两个选择:GCD 和 NSOperation. 由于 GCD 已经发展的比较主流了,我们稍后再说它,先说说面向对象的 NSOperation. NSOperation 表示一个单独的计算单元,它是一个抽象类(很类似 Java 里的 Runnable 接口...

Read More →
#iOS

写个自己的 Xcode4 插件

· iOS

刚写 iOS 程序的时候就知道 Xcode 支持第三方插件,比如ColorSense 等很实用的插件,但 Xcode 的插件开发没有官方的文档支持,一直觉得很神秘,那今天就来揭开它的面纱。 在 Xcode 启动的时候,它会检查插件目录 (~/Library/Application Support/Developer/Shared/Xcode/Plug-ins) 下所有的插件 (扩展名为.xcplu...

Read More →
#iOS

Xcode 自定义 Eclipse 中常用的快捷键

· iOS

之前在用 Eclipse 写 Java 的时候,有几个常用的快捷键,比如删除当前行,在当前行下面插入空行,向上 / 下移动当前行等等,到了 Xcode 里怎么也找不到这些快捷键,一直觉得 Xcode 自带的快捷键不够强大,直到今天才知道不借助第三方的插件,在 Xcode 下完全也可以实现这些功能,下面就说一下如何来做。 首先找到 Xcode 中的自带的配置文件/Applications/Xcode...

Read More →