ios面试--某宝金融公司

1,描述ios app的生命周期和状态
1),Not running 未运行 程序没启动
2),Inactive 未激活 程序在前台运行,不过没有接收到事件。在没有事件处理情况下程序通常停留在这个状态
3),Active 激活 程序在前台运行而且接收到了事件。这也是前台的一个正常的模式
4),Backgroud 后台 程序在后台而且能执行代码,大多数程序进入这个状态后会在在这个状态上停留一会。时间到之后会进入挂起状态(Suspended)。有的程序经过特殊的请求后可以长期处于Backgroud状态
5),Suspended 挂起 程序在后台不能执行代码。系统会自动把程序变成这个状态而且不会发出通知。当挂起时,程序还是停留在内存中的,当系统内存低时,系统就把挂起的程序清除掉,为前台程序提供更多的内存。

3,+(void)load +(void)initialize; 有什么用处
两个方法都可以进行一些类的初始化操作。其中有些小区别。
+(void)load 方法只要加入了工程中,进行了编译,且.m中实现了这个方法,都会调用一次,值得注意的时没实现的子类是不会调用的,就算父类实现了也不行。
+(void)initialize 在发送第一条消息给类的时候进行调用,跟load方法的不同之处在于,比较迟,可实现懒加载,且父类.m实现了该方法,子类不实现也会调用父类,跟正常的方法一样。categories,都实现了这个方法,只会调用其中一个,具有不确定性。

6、类别和类扩展的区别
*可以进行一些类的初始化操作
+(void)load 方法只要加入了工程中,进行了编译,且.m中实现了这个方法,都会调用一次,值得注意的时没实现的子类是不会调用的,就算父类实现了也不行。 *
category和extension区别
category: 类别,分类
专门用来给类添加新的方法,不能给类添加成员属性,添加了成员变量,也无法取到
注意:其实可以通过runtime给分类添加属性
分类中用@property定义变量,只会生成变量的getter,setter方法的声明,不能生成方法实现和带下划线的成员变量。
extension:类扩展
可以说成是特殊的分类,也称作匿名分类,可以给类添加成员属性,但是是私有变量,可以给类添加方法,也是私有方法
加载时机:
category加载,把category的实力方法,协议,已经属性添加到类上,把类方法和协议添加到metaclass
分类加载和方法调用顺序
加载:先加载原类的+load方法,再加载分类的+load方法,若多个分类,则据编译顺序加载
调用:先调用分类的方法,再调用原类的方法,分类方法会覆盖原类的方法

7,block有几种类型?分别是什么?
根据isa指针,block一共有3种类型的block
_NSConcreteGlobalBlock 全局静态
_NSConcreteStackBlock 保存在栈中,出函数作用域就销毁
_NSConcreteMallocBlock 保存在堆中,retainCount == 0销毁
二,
1,单链表反转
2,设计一个网络数据库

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 2,163评论 0 9
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,088评论 19 139
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,734评论 30 472
  • 第一篇 我 我出生在一个很平凡的家庭,长在一个很平凡的村庄,是一个很平凡的人。 学霸生涯,在小学以后就不复存...
    小无糖阅读 160评论 0 0
  • 老太太拉着老头子的手说: 老头子啊 我现在都觉得对不住你 那年 我的初恋男友回来找我 说他还爱我 回来带我走 我和...
    M欣M阅读 345评论 0 0

友情链接更多精彩内容