新闻
- Apple 在 App Store 中新加了购物分类:在以前,很多电商类的 app 都被放到了生活类下,不过其实生活类 app 包罗万象,像是日记类 app 或者食谱类 app 会更适合这个分类。最近,Apple 在 App Store 中添加了一个购物 (Shopping) 的分类,这将会是这类电商 app 更好的归宿。在 app 数量爆炸的今天,更多的分类意味着 app 曝光可能性的增加以及潜在用户更容易发现你的 app,这对开发者和消费者来说都是好消息。
- 第三方零售商将于 13 日开始 iPad Pro 发货:虽然 Apple 官方并没有给出 iPad Pro 的具体发售日期,只是笼统地说会在 11 月发布,不过根据一些零售商的行为来看,这款设备已经离我们很近了。欧美一些零售商接受 iPad Pro 预订并将于本月 13 日开始发货。不出意外的话,这也将是 Apple 官方发布 iPad Pro 的日期。
- XcodeGhost 持续影响 iOS 开发:如果你认为一个多月前的 XcodeGhost 事件已经彻底完结的话,你就大错特错了。近日美国一家信息安全公司发现有一些 XcodeGhost 的变种版本能够作用于 Xcode 7 和 iOS 9,并绕开 ATS (App Transport Security) 系统以及逃避静态分析工具的检测。另外,一些使用了被感染的 Xcode 编译的第三方库中也会带有 XcodeGhost ,这使得即使你的 Xcode 没有问题,但是只要使用了这样的第三方库,最后编译的 app 依然是被植入病毒的版本。
教程
- Why is Swift’s String API So Hard? :在 Swift 中字符串类型的处理很有意思,对应的 API 远比我们想象的复杂。作为一门没有历史包袱的语言,Swift 为什么会在字符串上选择了现在这样的处理方式,以前 C 系语言的字符串处理有什么问题?这篇文章从深层次讲述了为何 Swift 的字符串会设计成现在的样子。
- Elastic view animation using UIBezierPath :作者通过
UIBezierPath
实现了一个弹性下拉刷新的控件。这篇文章是这一实现过程的一个教程,写得非常详细。如果你对贝塞尔曲线的使用还不熟悉,或者对如何制作一个类似的自定义控件毫无头绪的话,这篇文章为你提供了一个很好的范例。 - 关于 @synchronized,这儿比你想知道的还要多:一篇翻译文章,介绍了
@synchronized
背后的故事。如果你已经使用 Objective-C 编写过任何并发程序,那么想必是见过@synchronized
了。它的作用类似于锁,用来防止不同的线程同时执行同一段代码。这篇文章对这背后都发生了什么进行了一些探索。 - 被误解的 MVC 和被神化的 MVVM :如何避免把 MVC (Model View Controller) 写成 Massive View Controller 可以说一直是 iOS app 架构上的重点,MVVM 是一种选择。但是 MVVM 也并不是万能的,辩证地看的话,在 MVVM 帮助解决耦合的通过,它也存在一些缺点。这篇文章简述了 MVC 和 MVVM 的一些各自的特点,可以作为我们在设计一个 iOS app 架构时的参考。
开源项目
- YYText :功能强大的 iOS 富文本编辑与显示框架,相当于将 UILabel 和 UITextView 的开源实现。这组实现和 UIKit 中的类似,是基于并扩展了 CoreText 的特性。相较于系统的原生实现,这个开源实现让你有机会根据项目需求进行自己的调整,这在复杂的图文混排应用场景中会比较有用。
- Unbox :又一个 Swift 的 JSON 解析框架。因为在 Swift 中,不提倡像 Objective-C 那样大范围使用动态特性,因此在 JSON 解析方面一直没有特别好的自动化方案。这个项目和已有的像是 Himotoki 或者 Argo 来说并没有特别大的不同,不过实现上要简单不少,可以作为备选的方案。
- Prephirences :如果你还在使用
NSUserDefaults
来保存用户设置的话,现在可以考虑更好一些的方式了。Prephirences 可以让我们很轻松地在NSUserDefaults
,Core Data,Keychain 等不同情境下保存用户设置。另外,你也可以轻易地合并不同的设置中的值。 - Armchair :Swift 写的用户评论管理,支持 iOS 和 OSX 中在一定条件下弹出让用户进行评论的对话框。这个框架和 Objective-C 中的 iRate 和 Appirater 等比较类似,包含了基本所有支持的本地化语言,并且可以通过各种条件来控制是否弹出评论提示。
感谢徐川对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。
评论