-
面向协议编程与 Cocoa 的邂逅 (上)
本文是笔者在 MDCC 16 (移动开发者大会) 上 iOS 专场中的主题演讲的文字整理。您可以在这里找到演讲使用的 Keynote,部分示例代码可以在 MDCC 2016 的官方 repo 中找到。因为全部内容比较长,所以分成了上下两个部分,本文 (上) 主要介绍了一些理论方面的内容,包括面向对象编程存在的问题,面向协议的基本概念和决策模型等,下半部分主要展示了一些笔者日常使用面向协议思想和 Cocoa 开发结合的示例代码,并对其进行了一些解说。引子面向协议编程 (Protocol Or...…
-
活久见的重构 - iOS 10 UserNotifications 框架解析
TL;DRiOS 10 中以前杂乱的和通知相关的 API 都被统一了,现在开发者可以使用独立的 UserNotifications.framework 来集中管理和使用 iOS 系统中通知的功能。在此基础上,Apple 还增加了撤回单条通知,更新已展示通知,中途修改通知内容,在通知中展示图片视频,自定义通知 UI 等一系列新功能,非常强大。对于开发者来说,相较于之前版本,iOS 10 提供了一套非常易用的通知处理接口,是 SDK 的一次重大重构。而之前的绝大部分通知相关 API 都已经被标...…
-
关于 iOS 10 中 ATS 的问题
本文于 2016 年 11 月 28 日按照 Apple 最新的文档和 Xcode 8 中的表现进行了部分更新。WWDC 15 提出的 ATS (App Transport Security) 是 Apple 在推进网络通讯安全的一个重要方式。在 iOS 9 和 OS X 10.11 中,默认情况下非 HTTPS 的网络访问是被禁止的。当然,因为这样的推进影响面非常广,作为缓冲,我们可以在 Info.plist 中添加 NSAppTransportSecurity 字典并且将 NSAl...…
-
开发者所需要知道的 iOS 10 SDK 新特性
总览距离 iPhone 横空出世已经过去了 9 个年头,iOS 的版本号也跨入了两位数。在我们回顾过去四五年 iOS 系统的发展的时候,不免感叹变化速度之快,迭代周期之短。iOS 7 翻天覆地的全新设计,iOS 8 中 Size Classes 的出现,应用扩展,以及 Cloud Kit 的加入,iOS 9 里的分屏多任务特性等等。Apple 近年都是在 WWDC 发布新的系统和软件,然后在秋季和冬季 (或者来年春季) 召开硬件产品的发布会。WWDC 上每一项软件的更新其实都预示了相应的硬...…
-
写给初次参加 WWDC 的开发者的简明攻略
今天 Apple 宣布了 WWDC 16 的抽选开始,而 4 月 22 日周五将出抽选结果并开始购票。随着我们国内开发者收入水平的逐步提升,以及日益增长的与全球开发者接触和自我提高的需求,最近参与 WWDC 的中国开发者明显比以前要多,而抽选机制也正给了我们很好的参加机会,至少我们不需要熬夜和一群“疯子”在十几秒内抢票了。如果您看到这篇文章的时候已经抽中了门票,并且付款成功并计划在 6 月的时候前往三藩的话,先大声说“恭喜恭喜恭喜你”!鉴于很多的参会者可能是第一次参加 WWDC,甚至可能是...…
-
ObjC 中国的工作回顾和之后的计划
小时候因为成绩还算凑合,所以经常会被任命做个班干部什么的。其实这并不是一份很有意思的工作,除了上课要被老师重点“关照”点名起来回答问题以外,最烦人的事情就是开学要写工作计划,期末要写工作总结了。耗时耗力不说,写出来的东西也并不会有什么人看。所以我大抵对写计划和写总结这样的事情是抵触的。顺便还希望这篇总结加计划的东西能有人有兴趣看。时隔十几二十年后,再提笔 (其实是拿键盘) 开始写一份工作回顾和计划的时候,我却是怀着满心欢喜的。从 2014 年 3 月第一个 commit 开始,ObjC 中...…
-
Swift 2 throws 全解析 - 从原理到实践
本文最初于 2015 年 12 月发布在 IBM developerWorks 中国网站发表,其网址是 http://www.ibm.com/developerworks/cn/mobile/mo-cn-swift/index.html。如需转载请保留此行声明。Swift 2 错误处理简介throws 关键字和异常处理机制是 Swift 2 中新加入的重要特性。Apple 希望通过在语言层面对异常处理的流程进行规范和统一,来让代码更加安全,同时让开发者可以更加及时可靠地处理这些错误。Swi...…
-
Swift 性能探索和优化分析
本文首发在 CSDN《程序员》杂志,订阅地址 http://dingyue.programmer.com.cn/。Apple 在推出 Swift 时就将其冠以先进,安全和高效的新一代编程语言之名。前两点在 Swift 的语法和语言特性中已经表现得淋漓尽致:像是尾随闭包,枚举关联值,可选值和强制的类型安全等都是 Swift 显而易见的优点。但是对于高效一点,就没有那么明显了。在 2014 年 WWDC 大会上 Apple 宣称 Swift 具有超越 Objective-C 的性能,甚至某些情...…
-
如何打造一个让人愉快的框架
这是我在今年 1 月 10 日 @Swift 开发者大会 上演讲的文字稿。相关的视频还在制作中,没有到现场的朋友可以通过这个文字稿了解到这个 session 的内容。<br>虽然我的工作是程序员,但是最近半年其实我的主要干的事儿是养了一个小孩。所以这半年来可以说没有积累到什么技术,反而是积累了不少养小孩的心得。当知道了有这么次会议可以分享这半年来的心得的时候,我毫不犹豫地选定了主题。那就是 如何打造一个让人愉快的小孩但考虑到这是一次开发者会议…当我把这个想法和题目提交给大...…
-
写在 2015 的尾巴
上一次写类似年终总结的东西已经是大概快十年前的事情了,那时候还刚进大学,每天也就喜欢发一些无病呻吟的东西。回望之后,发现那些蹉跎掉的岁月确实无法再重新来过,不过也让我懂得了,幸好我们还能珍惜当下。今年于我来说,注定是不平凡的一年。愈到年关,写作的冲动就愈发强烈,它驱使着我去记录下些什么,所以有了这篇写给自己的“阔别已久”的年终总结。无论何时,无论何地,平安就好前几天因为北京雾霾很凶,看到有人在说柴静的雾霾报告,自己之前没看过,所以就找来补了补课。《穹顶之下》确实是一部非常好的新闻调查片子,...…
-
当 App Store 遇上电视,开发者的第四代 Apple TV 开箱体验
引子2015 年 9 月,San Francisco。今年接近 100 华氏度的气温要比往年都更热,而 Apple 例行的秋季发布会也如期在这里举行。自从 iPhone 一战成名后,每年的 iPhone 旗舰机型都是移动通讯设备的业界标杆。而今年秋季发布会大家也自然地将重点放在了最新的 iPhone 6s 上。手机乏善可陈,除了硬件参数的一些常规升级外,我们并没有看到 iPhone 有多大进步。不过这也是大家预料之中,每隔两年一款的 s 系列定位就只是对之前版本的补充。另外,更大屏幕的 i...…
-
WWDC15 Session笔记 - Xcode 7 UI 测试初窥
Unit Test 在 iOS 开发中已经有足够多的讨论了。Objective-C 时代除了 Xcode 集成的 XCTest 以外,还有很多的测试相关的工具链可以使用,比如专注于提供 Mock 和 Stub 的 OCMock,使用行为驱动测试的 Kiwi 或者 Specta 等等。在 Swift 中,我们可以继续使用 XCTest 来进行测试,而 Swift 的 mock 和 stub 的处理,我们甚至不需要再借助于第三方框架,而使用 Swift 自身可以在方法中内嵌类型的特性来完成。关...…
-
WWDC15 Session笔记 - 30 分钟开发一个简单的 watchOS 2 app
Apple Watch 和 watchOS 第一代产品只允许用户在 iPhone 设备上进行计算,然后将结果传输到手表上进行显示。在这个框架下,手表充当的功能在很大程度上只是手机的另一块小一些的显示器。而在 watchOS 2 中,Apple 开放了在手表端直接进行计算的能力,一些之前无法完成的 app 现在也可以进行构建了。本文将通过一个很简单的天气 app 的例子,讲解一下 watchOS 2 中新引入的一些特性的使用方法。本文是我的 WWDC15 笔记中的一篇,在 WWDC15 中涉...…
-
WWDC15 Session笔记 - iOS 9 多任务分屏要点
本文是我的 WWDC15 笔记中的一篇,涉及的 Session 有 Getting Started with Multitasking on iPad in iOS 9 Multitasking Essentials for Media-Based Apps on iPad in iOS 9 Optimizing Your App for Multitasking on iPad in iOS 9iOS 9 多任务综述iOS 9 中最引人注目的新特性就是多任务了,在很久以前的越狱开发...…
-
开发者所需要知道的 iOS 9 SDK 新特性
本文为InfoQ中文站特供稿件,首发地址。如需转载,请与InfoQ中文站联系。年年岁岁花相似,岁岁年年人不同。今年的 WWDC 一如既往的热闹,但是因为要照顾家里刚出生的宝宝以及宝宝的娘,就只能在家里的“窝里蹲”家庭影院来关注这一全球 Apple 开发者的盛会了。生命不息,学习不止。一如以往几年,我会陆续写一些关于 WWDC 和新的 SDK 里我觉得有意思和我自己重点关注和学习的内容。现在回头看前几年写的东西,愈来愈感觉到以前青葱岁月的自己真是傻得可爱。不过一路以来的成长轨迹倒是很明显,也...…
-
Scheme 初步
之前定了每年学习一门语言的目标,自然不能轻言放弃。今年目标:简单掌握 Scheme。因为自己接触这门语言也不过寥寥数天,所以更多的会以引导的方式简单介绍语法,而不会 (也没有能力) 去探讨什么深入的东西。本文很多例程和图示参考了紫藤貴文的《もうひとつの Scheme 入門》这篇深入浅出的教程,这篇教程现在也有英译版和中译版。我自己是参照这篇教程入门的,一方面这篇教程可以说是能找到合适初学者学习的很好的材料,另一方面也希望能挑战一下自己的日文阅读能力 (结果对比日文和英文看下来发现果然还是日...…
-
跨平台开发时代的 (再次) 到来?
这篇文章主要想谈谈最近又刮起的移动开发跨平台之风,并着重介绍和对比一下像是 Xamarin,NativeScript 和 React Native 之类的东西。不会有特别深入的技术讨论,大家可以当作一篇科普类的文章来看。故事的开始“一次编码,处处运行” 永远是程序员们的理想乡。二十年前 Java 正是举着这面大旗登场,击败了众多竞争对手。但是时至今日,事实已经证明了 Java 笨重的体型和缓慢的发展显然已经很难再抓住这个时代快速跃动的脚步。在新时代的移动大潮下,一个应用想要取胜,完美的使用...…
-
Swift 中的指针使用
Apple 期望在 Swift 中指针能够尽量减少登场几率,因此在 Swift 中指针被映射为了一个泛型类型,并且还比较抽象。这在一定程度上造成了在 Swift 中指针使用的困难,特别是对那些并不熟悉指针,也没有多少指针操作经验的开发者 (包括我自己也是) 来说,在 Swift 中使用指针确实是一个挑战。在这篇文章里,我希望能从最基本的使用开始,总结一下在 Swift 中使用指针的一些常见方式和场景。这篇文章假定你至少知道指针是什么,如果对指针本身的概念不太清楚的话,可以先看看这篇五分钟 ...…
-
Apple WatchKit 初探
随着今天凌晨 Apple 发布了第一版的 Watch Kit 的 API,对于开发者来说,这款新设备的一些更详细的信息也算是逐渐浮出水面。可以说第一版的 WatchKit 开放的功能总体还是令人满意的。Apple 在承诺逐渐开放的方向上继续前进。本来在 WWDC 之后预期 Today Widget 会是各类新颖 app 的舞台以及对 iOS 功能的极大扩展,但是随着像 Launcher 和 PCalc 这些创意型的 Today Widget 接连被下架事件,让开发者也不得不下调对 Watc...…
-
WWDC 2014 Session笔记 - 可视化开发,IB 的新时代
本文是我的 WWDC 2014 笔记 中的一篇,涉及的 Session 有 What’s New in Xcode 6 What’s New in Interface Builder如果说在 WWDC 14 之前 Interface Builder (IB) 还是可选项的话,我相信在此之后 IB 已经是毫无疑问的 iOS 开发标配了,纯代码界面可以说已经渐行渐远,可以逐渐离开我们的视线了。一言蔽之,就是 Apple 在催促大家使用 IB,特别是 Storyboard 做为界面开发的唯一...…