1.数组越界,字典取空问题解决
实现一个数组或者字典的扩展方法,判断数组或者字典是否为空或者越界,如果是返回对象,通过runtime交换数组或者字典系统方法。
2.setNeedsDisplay、setNeedsLayout、layoutIfNeed区别
setNeedsDisplay会调用drawRect方法重画页面
setNeedsLayout会调用layoutSubviews,页面才会发生变化。调用layoutIfNeed不会触发
3.封装组件
通过RSA和RES加密,然后加入私有库,通过pod引用,解密使用
4.AES、RSA
目前最广泛的是使用AES+RSA组合加密的方式。即采用对称加密与非对称加密相结合的方式
客户端用AES加密传输数据(RSA消耗大,影响用户体验),然后通过RSA加密AES的秘钥,传给后台,后台也是通过同样方式传输数据给客户端
5.循环引用
当两个不同的对象各有一个强引用指向对方,那么循环引用便产生了,当然多一个对象产生的环也是一样的。
1、父类与子类
父类调用子类,并且子类调用父类,会造成循环引用
2、Block
Block 对象ARC中用Strong修饰,MRC中用copy修饰
Block 本身被Self强引用,并且在Blcok中 强引用了Self ,会造成循环引用,解决方法是使用 weakSelf 代替Self
3、Nstimer
计时器保留其目标对象,反复执行任务导致的循环
6.Blcok
Block有栈block,堆block,全局block三种
栈block存在栈中是自动销毁,堆block存在堆中,需要手动销毁,全局block存在全局区,相当于单利
block使用copy修饰,是因为block默认是栈block,如果不用copy,函数引用结束后,会自动销毁,再次引用block会空指针异常,使用copy后
会成为堆block,可以再次调用。
7.[ [ NSObject alloc ] init ]
alloc负责分配内存,init负责初始化
8. self调用本身方法,super调用父类方法
super class 和self calss是一样的 获取的都是当前子类,只是super class会找父类的方法而已,但是打印是一样的
9.main函数之后,会创建UIApplication,设置Appdelgte代理,Appdelgte里面会有一个uiwindow,UIwindow里面会有Controller控制器
10. nil:判断空对象 null :判断空指针 nsull:判断空集合
网友评论