Croath Liu

云游四海的工程师

文章

  1. guard & defer

    最近更新的 Swift 2.0 带来了两个新的能够简化程序和提高效率的控制流表达形式:guarddefer。前者可以让代码编写更流畅,后者能够让执行推迟。我们应该如何使用这两个新的声明方式呢?guarddefer 将如何帮我们厘清程序和进程间的对应关系呢?

  2. Unmanaged

    通过 Swift 标准库就可以看出,Swift 在安全性和可靠性方面和与 Objective-C 互通性之间方面有着明显的界线。像 IntStringArray 这些类型在使用过程中都会表现出直接且无歧义的行为,但如果什么都不考虑就创建 UnsafeMutablePointerUnmanaged 等类型的实例,那恐怕就要踩到坑里了。

  3. Swift 1.2

    Swift 正如其名,速度飞快。随着 Swift 1.2 beta 版本的发布,其开发团队在这次加速俯冲中一次性响应了开发社区的诸多需求,带来了许多激动人心的新特性。本周我们会花一点时间关注这个版本的两个明显提升使用体验的新功能:一个是 if let 语句 optional 绑定的巨大变化,另一个是 Objective-C 中的空值标注。

  4. Swift & the Objective-C Runtime

    即使一行 Objective-C 代码也不写,每一个 Swift app 都会在 Objective-C runtime 中运行,开启动态任务分发和运行时对象关联的世界。更确切地说,可能在仅使用 Swift 库的时候只运行 Swift runtime。但 Objective-C runtime 与我们共处了如此长的时间,我们也应该将其发挥到极致。

    本周的 NShipster 我们将以 Swift 视角来观察这两个运行时中关于关联对象和方法交叉的技术。

  5. Changing of the Guard

    An important site announcement.

  6. NSUndoManager

    每个人都会犯错误。多亏了 Foundation 库提供了比拼写错误更强大的功能来解救我们。Cocoa 有一套简单强壮的 NSUndoManager API 管理撤销和重做。

  7. Pay

    你要在网上买东西的那一刻你会发现有一种现代化带来的独有的焦虑感。那种感觉不能用语言形容,大概是这样的:"我的信用卡去哪了?卡号是多少?我好想买这个啊卡去哪了!"

  8. UIAlertController

    你知道 UIAlertViewUIActionSheet (以及它们各自的 delegate protocols) 在 iOS 8 中已经被废弃了吗?不骗你哦。

  9. Swift Comparison Protocols

    Objective-C 让我们对相等性和唯一性的本质慢慢有了带有哲学色彩的思考。为了解救那些不愿意向论文一样的哲理卑身屈膝的开发者,Swift 为此作出了很多改进。

  10. WKWebView

    iOS 与 web 之间的关系非常复杂,这种复杂关系甚至可以追溯到几十年前系统建立初期。

  11. Benchmarking

    对于完成有意义的工作来说抽象很重要,但却会带来副作用。利用benchmarking,工程师可以揭开他们代码中运行效率的面纱,然后利用获得的信息来优化。

  12. NSURL /
    NSURLComponents

    在所有的一维数据类型中,URI有着至高地位。单独就人类可阅读的字符串这一点来说,它存在并将永远存在于计算机中任何你能够想象到的对位置信息进行编码的数据中。

  13. Empathy

    我们出于本性地想慷慨而有耐心地帮助其他人、解释一些观点。然而在网上,人性似乎没有现实中那么丰满。

  14. UIReferenceLibraryViewController /
    DCSDictionaryRef

    虽然字典的地位很大程度上已经被基于网络的“一键释义”功能所替代,但是字典和词汇表在拼写检查、语法检查、自动纠错、自动摘要、语义分析等领域,仍然在幕后扮演着重要角色。

  15. NSTemporaryDirectory /
    NSItemReplacementDirectory /
    mktemp(3)

    外存被用于写入可持续化保存的数据,但当数据生命周期很短时,用Objective-C操作临时文件的资料却很少(可能有,不过这些资料本身也是“临时”的)。

  16. Associated Objects

    对象关联是Objective-C 2.0在运行时的新特性,这个特性允许你将任何键值在运行时关联到对象上。对象关联是黑暗符咒一样,应该和其他来自objc/runtime.h的函数一样被小心谨慎地对待

  17. UIApplicationDelegate launchOptions

    AppDelegate 是 iOS 各种功能的集散中心。

  18. Xcode Key Bindings & Gestures

    Xcode 快捷键和手势不仅节省了宝贵的工作时间,而且能让你在工作过程中感到更自信、能力变得更强,这样的工作方式也更合理。

  19. iCloud

    可能Apple最出名的地方就是它的持久化记录信息来构建web服务了。从消费者产品级的MobileMe、Ping到开发者工具级别的Provisioning Portal和iTunes Connect,苹果都在便捷性、鲁棒性、扩展性方面确立了新标准

  20. ReactiveCocoa

    打破了苹果API排他性的盾牌,本期NSHipster将介绍一个为Objective-C勇敢构建新纪元的开源项目:ReactiveCocoa

  21. Reader Submissions -
    New Year's 2013

    为了庆祝即将到来的 year++,我觉得编译一个你们最喜爱的tips和tricks的列表一定很好玩。读者可以提交他们最喜爱的和Objective-C之间的琐事、各种框架的奥秘、Xcode的隐藏功能之类的你认为很酷的东西。

  22. NS_ENUM & NS_OPTIONS

    一个专业的Objective-C工程师应该在面向对象和面向过程范式间优雅地切换,同时能够掌握二者的优势。

  23. NSURLProtocol

    Foundation库的URL加载系统是每个iOS工程师应该熟练掌握的。而在Foundation库中所有与网络相关的类和接口中,NSURLProtocol或许是最黑科技的了。

  24. NSLinguisticTagger

    NSLinguisticTagger在语言学功能上来讲是一把名副其实的瑞士军刀,它可以讲自然语言的字符串标记为单词、确定词性和词根、划分出人名地名和组织名称、告诉你字符串使用的语言和语系。

  25. CFBag

    在计算机科学领域集合数据类型的殿堂中,bag没有数组、集合、联合数组、树、图、优先队列那么占有一席之地。其实bag本身就很晦涩,你可能从没听过这东西。