iOS 开发

给程序员的一个忠告:要买就买顶配的 MacBook Pro

记得刚开始在宅米的时候,公司配的电脑是 Macbook Air,当时的项目比较小,功能也不算复杂,开发语言也全部采用 Objective-C。虽然当时也想部分采用 Swift 试试水,但是 Swift 当时不是很稳定,大部分开发者都在持观望态度。所以最后也没有和 Swift 一起混编,当时我天真的以为 iOS 开发 8G 内存的 Macbook Air 就能扛得住了,打个包也就至多 10 来分钟的事,趁着打包还能上个卫生间或者喝杯咖啡休息下。

iOS 开发

iOS 缓存框架 YYCache 源码分析

缓存在很多硬件、软件系统中都有广泛的使用。CPU 靠缓存来提高处理速度,服务器软件靠缓存来提高处理能力。同样在 iOS 中,我们也可以对 “热” 数据进行缓存,比如图片,API,用户配置等等。在开发中,经常会使用一些现成的缓存框架来帮我们做缓存,比如专门缓存图片的 SDWebImage,也可以使用数据库来做缓存,比如 Realm,SQLite。缓存可以有效减少资源的重复获取,减轻服务器压力,提升用户体验。

iOS 开发

iOS11 使用过期方法可能会导致 SpringBoard 重启

SpringBoard 是 iOS 管理主屏幕的程序,在越狱比较流行的时候,SpringBoard 经常被用来修改美化桌面等等。但是随着 iOS 系统的完善,很多功能和 API 也都有了,越狱也越来越没有必要了,平时开发中也没怎么接触过 SpringBoard,最近在项目中遇到一个非常诡异的 bug,我们的 App 点击锁屏中的推送,然后解锁手机后,打开 App 会直接导致 SpringBoard 重启。

iOS 开发

Runtime 基础(一)

Objective-C 是一门动态语言,它把很多在编译时做的事情放到了运行时来处理。由于这个特性,我们可以很灵活的使用 runtime 这个黑魔法来完成一些静态语言做不到的事情,比如使用 JSPatch 给应用打 patch,使用 Mantle 映射 json 和 Model。runtime 是使用 C 和汇编实现的一个运行时库,使得在 C 语言的基础上增加了面向对象的特性,从而有了 Objective-C 这个语言。 Class 和 id 在 objc.h

iOS 开发

使用 carthage 来管理项目依赖

在 CocoaPods 出现之前,iOS 开发者必须手动管理第三方库依赖,这些事情不仅没有什么技术含量,而且经常容易出错。对于新手来说,配置工程文件简直让人头疼。CocoaPods 的出现极大的改善了这些状况,它可以自动帮你管理依赖,而且大多数常用的第三方库都支持使用 CocoaPods 来进行安装。开发者终于从这些繁杂的依赖管理中解脱出来,可以把精力专注于应用本身。 然而,CocoaPods 并不是完美的,它也有许多缺点: CocoaPods 有一个中心服务器来管理各个包的元信息,一旦这个服务器挂了,CocoaPods 使用必然会受到影响,比如 CocoaPods 的官方 Repo; CocoaPods 对于工程是侵入性的,它会生成一个

iOS 开发

使用 fastlane + shenzhen 实现持续集成

在 iOS 开发中,最常见的打包方式是使用 Xcode 的 Product -> Archive 来进行打包,这种打包方式不仅慢,需要人工操作,而且打包完成之后还要手动把 ipa 包发给测试人员或上传到 AppStore,像这种重复性的工作最好由工具来完成。那么有没有一种自动化的工具可以完成这些操作呢? fastlane 就是这么一款工具,它可以自动编译和发布 iOS 、Mac 或者 Android 程序。fastlane 包含了一系列的工具链来完成这些功能,你可以根据自己的需求定制出适合自己的持续集成方案。 fastlane 的工具链 fastlane

iOS 开发

为 Xcode 工称添加多个 Targets

在项目中经常会遇到这样的需求,同一份代码需要根据不同环境打出不同的包,比如:开发环境、测试环境、生产环境等等,很多时候仅仅是修改一下 BaseAPI,但是这样会频繁的修改代码,而且容易出错。Xcode 可以创建多个 Targets,可以将 App 部分配置和代码进行分离,打包时选择相应的 Targets 就好了。 创建 Targets 我们可以在 General -> Targets 列表中选中一个 Targets,然后使用 Command-D 来 Duplicate 一个

iOS 开发

iOS 开发者账号,开发、发布证书配置

做 iOS 或者 OS X 开发的少不了与证书打交道,苹果使用证书对 App 进行签名来验证 App 的合法性,不管是进行内测还是提交到 AppStore,App 都需要进行签名。 免证书真机调试 在 Xcode 7 中,苹果放宽了对开发者的限制,开发者无需注册开发者账号也可以使用真机进行调试了,只需要在 Xcode -> Preferences -> Accounts 里登陆自己的 Apple ID,

iOS 开发

iOS应用如何统计用户数量?

在 iOS 开发中经常会有统计用户数量、追踪用户行为等需求,这一类的需求在技术上首先要解决的问题是如何进行设备去重,也就是对设备进行唯一性标记。 在 iOS 设备上,官方支持用来进行用户追踪的是 IDFA 广告标识符(IDFA-identifierForIdentifier),但是使用 IDFA 必须符合苹果的相关要求,当然也有许多第三方的 SDK 可以统计用户数量,比如友盟、极光推送等等。 IDFA 使用 IDFA 来标识唯一设备的好处是不用集成其他第三方 SDK,但是 IDFA 是可以被用户手动重置的,也就是说使用 IDFA 来判断独立设备是有隐患的,一旦用户将

iOS 开发

开发利器--免费的接口测试工具Postman

作为前端开发者,经常需要对API接口进行测试,一款好的工具能让开发事半功倍。在此,我强力向大家推荐Postman这款工具。 您可以使用 Postman: 接口测试:支持Normal,Basic Auth,Digest Auth, OAuth1.0,OAuth2.0等模式; http请求支持GET,POST,PATCH,DELETE,COPY,HEAD等14种常用的请求方式; 接口分组,接口测试参数保存,数据导出; 测试结果支持json,xml,html,text的格式化高亮显示; 接口环境配置。 Postman之前属于chrome扩展,最近开发了chrome