iOS技巧

01.+load和+initialize的区分是何许?

调用时刻:
load:类加载进内存调用
initialize:当第一次使用类或者子类就会调用
调用次数
load只会调用一次
initialize:不确定,具体根据子类和具体调用情况
比如有个类,它有一个子类,第一次使用子类,父类的initialize调用2次

02.UITabBarController控制器中view的内部结构

1).存放子控制器的view:
2).UITabBar: 49

03.简述你对协议的接头?

什么时候使用协议,为什么要搞个协议
为什么使用协议: 思想:当有些事情,自己不想做,交给别人,就搞个协议.实例:Appdelegate
什么时候使用协议: 高级:延展到封装自己框架(自定义类),常常通过协议给外界提供接口(协议)

04.UICollectionView使用手续?

1.一定要初始化布局 *
2).设置数据源,展示 代理.处理cell点击
3).cell必须通过注册 *
4).cell必须要自定义 *

05.category和extension的区别

category:分类,可以取名

extension:扩展,类目,匿名

作用?
category:可以扩展方法,不能添加属性
extension:可以添加属性,也可以声明方法

用法(区别):
category通常用于给系统类 扩充方法
extension通常用于自定义类

06.runtime落实的机制是如何,有怎样用法,一般用于干嘛

运行时机制,调用方法,一开始不确定哪个对象去吊用,等运行的时候才会找到相应对象去调用方法。
1).遍历类中所有属性和方法,可以自己写一套字典转换模型工具类.
2).动态给分类添加属性,需求:当想把一个属性保存系统的类中.
3).交换方法,系统方法达不到我们的需要,想给系统的方法扩充一些功能.
4).动态添加方法.
1.遍历类所有属性和方法

07.咋样时候会暴发EXC BAD ACCESS非常?

1).解释EXC BAD ACCESS异常?
2).怎么才会导致这个错误:访问不该访问的对象.
3).避免这种:当一个对象被销毁,记得清空指针.

08.怎么研究新的API

1).百度 iOS10API
2).WWDC和苹果官方文档
3).在新Xcode中创建项目,在旧的Xcode打开,发现很多错误,查一查.
4).查看别人的博客,如猫神,新的技术及时更新 如:简书.

09-你是怎么领会bounds的

frame: 控件可视范围 相当于 父控件
bounds: 也是指的是范围 指的是 控件可视范围 在 内容中 区域 . 控件可视范围相对于内容
内容:每个控件都有自己内容,而且是无限大,而且这个控件的所有子控件都是相对于内容
bounds:以自己内容为原点

10-数据传值的两种形式

顺传:直接定义属性传值
逆传:代理,block
通知传值:当谁也拿不到谁的事情,可以采取使用通知传值

11-KVC底层怎么落实的

1.根据key转换成对应set方法,去对象中找到有没有对应的set方法
2.根据key去查找有没有对应成员属性,不带下划线
3.根据key去查找有没有带下划线的成员属性
4.直接报找不到对应key错误
所以在通常开发中,一般会保证模型的属性名根字典一一对应,当然我们一种解决方式,
可以重写报错的方法,目的,把报错方法实现给干掉,就不会报错,这样就可以不用蓝模型中属性与字典一一对应

12-KVO底层怎么落实的

Person的name属性改变
1.生成Person一个派生类(子类) Person_KVO
2.在这个子类中重写setName方法 1.给成员属性赋值 2.通知观察者调用observeValueForKeyPath
3.改变person对象isa 改成Person_KVO

13-简述项目支付的步骤

独立开发
1.需求文档:描述下应用功能
2.查看原型图:描述app每个界面 和 怎么与用户交互
3.根据原型图搭建基本项目结构,开始按模块去开发
4.界面搭建完,再去查看接口文档,请求数据,然后展示
当你做项目的时候,碰见一些什么问题. 简历中有一些项目,每个项目列举两个比较难题
百思不得姐:获取全局导航条的时候,最好不要使用appearance , 应该去使用appearanceWhenInContain

迭代开发
1.根据组长,项目经理提供excel去做,这里就有每月的任务
2.需要去寻找找到对应的类做事情,1.根据类名,去猜 2.通过断点去调试,一层一层去寻找

14-肿么办一个新的模块

1.根据原型图,划分结构
2.搭建界面
3.参照接口文档,请求数据,展示数据
4.调整界面细节,提高用户体验
5.处理界面业务逻辑(功能)

相关文章