iOS面试问题
Objective-C相关
单例
第一步
必不可少的。但注意,这里用的是super
来调用allocWithZone:
:
1 | + (instancetype)sharedSingleton { |
第二步
防止alloc] init]
和new
引起的错误,因为alloc] init]
和new
实际是一样的工作原理, 都是执行了下面方法:
1 | // 防止外部调用alloc 或者 new |
第三步 NSCopying
防止copy
引起的错误,个人感觉当你的单例类不遵循NSCopying
协议,外部调用本身就会出错。如果不是业务需求不遵循协议,该方法也可以不写。这都是个人观点,不过为了严谨还是写吧
1 | // 防止外部调用copy |
第四步
防止mutableCopy
引起错误,个人感觉当单例类不遵循NSMutableCopying协议,外部调用本身就会出错。如果不是业务需求不遵循协议,该方法也可以不写。这都是个人观点,不过为了严谨还是写吧
1 | // 防止外部调用mutableCopy |
id与instancetype的区别
instancetype能返回相关联的类型(使那些非关联返回类型的方法返回所在类的类型);而id 返回的类型依旧是id类型。
instancetype只能做返回值,不能做参数;而id表示任意类型,既可以做返回值也可以做参数。
(使用Instancetype的好处是能够确定对象的类型,能够帮助编译器更好的为我们定位代码书写问题。)
数据持久化
见iOS数据存储方式一文。
- 本文链接:http://katherineleeyq.cn/2019/07/13/iOS面试问题/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!