摘要:
一、前言在开发过程中,可能遇到服务端返回数据中有 null,当取到 null 值并对 null 发送消息的时候,就可能出现 unrecognized selector sent to instance,导致应用 crash 的情况。针对这种情况,在每次取值的时候去做判断处理又不大合适,在 GitHub上发现了 NullSafe。把这个文件拖到项目中,即使出现 null 的情况,也不会报出 unr... 阅读全文
摘要:
一、简介OC在创建对象时,不会直接返回该对象,而是返回一个指向对象的指针。OC在内存管理上采用了引用计数,它是一个简单而有效管理对象生命周期的方式。在对象内部保存一个用来表示被引用次数的数字,init、new和copy都会让计数+1,调用release让计数-1。当计数等于0的时候,系统调用dealloc方法来销毁对象。A * a = [[A alloc] init];... 阅读全文
摘要:
一、Apple开发者账号1.1 开发者账号类型个人级公司级企业级公司和企业的可多人协作。在苹果的开发者平台登录后,可在 People 界面邀请其他人员协作开发,邀请的人需要注册一个 appleId 账号,并且可以设置开发人员的权限。1.2 辨别账号类型个人级账户的 Apple Developer Program 下方只有 Certificates,identifiers & Profiles 和 ... 阅读全文
摘要:
一、UIResponderapp 使用响应者对象接收和处理事件,只有继承 UIResponder 的类,才能处理事件。UIApplication、UIView、UIViewController 都是继承自 UIResponder 类,可以响应和处理事件。CALayer 继承自 NSObject,不是 UIResponder 的子类,无法处理事件。响应者接收到原始事件数据,必须处理事件或者转发到另一... 阅读全文
摘要:
对于iOS程序员来说,内存管理是入门的必修课。引用计数、自动释放等概念,都是与C语言完全不同的。iOS内存管理的核心是引用计数。接触MRC时遇到最头疼的问题就是:为什么那么多release?什么地方需要release?同样初始化一个字符串的两个方法为什么不同,上边一个不需要调用release,后边一个就需要调用release?NSString * str1 = [NSStri... 阅读全文
摘要:
一、推送原理当用户打开应用程序的通知中心之后,苹果远程推送服务器就能把消息推送到装有该应用的设备上,具有强制性、实时性的特点,并且用户无需打开应用都能收到推送的消息。1.1 名词介绍Provider:消息提供者,一般是我们的后台服务器或者第三方推送服务器后台APNs(Apple Push Notification service):苹果推送通知服务。APNs Server(Apple Push N... 阅读全文
摘要:
一、类簇类簇是 Foundation 框架广泛使用的设计模式。类簇在公共抽象超类下对多个私有的具体子类进行分组。以这种方式对类进行分组简化了面向对象框架的公共可见体系结构,而不会降低其功能丰富度。类簇是基于抽象工厂设计模式的。二、抽象工厂抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。很... 阅读全文
摘要:
RAM ROMRAM:运行内存,不能掉电存储。ROM:存储性内存,可以掉电存储,例如内存卡、Flash。由于 RAM 类型不具备掉电存储能力(即一掉电数据消失),所以 app 程序一般存放于 ROM 中。RAM 的访问速度要远高于 ROM,价格也要高。App程序启动App 程序启动,系统会把开启的那个 App 程序从 Flash 或 ROM 里面拷贝到内存(RAM),然后从内存里面执行代码。另一个... 阅读全文
摘要:
一、库1.1 什么是库?库就是程序代码的集合,将 N 个文件组织起来,是共享程序代码的一种方式。从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。1.2 库的分类根据程序代码的开源情况,库可以分为两类开源库源代码是公开的,你可以看到具体实现。比如知名的第三方框架:AFNetworking、SDWebImage。闭源库不公开源代码,只公开调用的接口,看不到具体的实现,是一个编译后的二进... 阅读全文
摘要:
一、静态和动态在项目中使用 pod 实现模块化,对于子模块和第三类库的导入方式存在两种:静态库、动态库。当在 podfile 中指定 use_frameworks! 时,子模块和第三方类库将被打包成 .framework 动态库,模块之间的代码不能直接引用,需要添加依赖;反之(默认情况)将打包成 .a 静态库。动态库和静态库的区别:资源加载方式包的大小 编译速度1.1 资源加载方式s.depend... 阅读全文