学习OC

2021-03-09  本文已影响0人  鄭经仁

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:判断空集合

上一篇 下一篇

猜你喜欢

热点阅读