- retain 和 copy 的区别 -- iOS学习-属性@property的修饰词
- retain:创建一个指针,引用计数+1;retain属性表示两个对象地址相同,内容当然也相同了,这个对象的引用计数值+1。
- copy:创建一个新对象;copy属性代表两个对象内容一样,新的对象的引用计数为1,与旧有对象的引用计数无关,旧有对象没有变化;copy减少了对象对上下文的依赖。
- 深拷贝和浅拷贝:
- 浅拷贝:并不拷贝对象本身,仅仅拷贝的是指向对象的指针,对象的引用计数+1。(指针拷贝)(retain)
- 深拷贝:直接拷贝整个对象内存到另一块内存中。(内容拷贝)(copy)
类目和继承的异同
在Objective-C中,给一个类扩展一个其它方法,有两种实现方式:类别和继承。继承Inherit
这个是面向对象语言都有的一个特性,子类会继承父类的方法和属性。
对于以下情况,无法使用类别,必须使用继承。
1)新扩展的方法与原方法同名,但是还需要使用父类的实现。因为使用类别,会覆盖原类的实现,无法访问到原来的方法。
2)扩展类的属性,这个类别无法做到。类别category
这是Objective-C语言的一个特性,可以在不改变类名和原来类的实现的前提下,为已存在的类添加新的方法,但是不能添加实例变量。
以下两种方式最好使用类别。
1)针对系统提供的一些类,例如:NSString,NSArray,NSNumber等类,系统本身不提倡使用继承去扩展方法,因为这些类内
部实现对继承有所限制,所以最后使用类别来进行方法扩展。
2)类别支持开发人员针对自己构建的类,把相关的方法分组到多个单独的文件中,对于大型而复杂的类,这有助于提高可维护性,并简化单个源文件的管理。懒加载
1.懒加载基本
懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。
所谓懒加载,写的是其get方法.注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再去进行实例化。
2.使用懒加载的好处:
(1)不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强
(2)每个控件的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合
3.代码示例,查看链接。iOS开发UI篇-懒加载_window和self.window的区别
_windows代表实例变量;
self.windows代表set或get方法。
-
frame与bounds的区别
1>. frame是该View在父View坐标系统中的位置和大小;
2>. bounds是该View在本地坐标系统中的位置和大小;X值永远等于0,Y值永远等于0。
UIVIew与CALayer(有一个文档,在附件中保存。)
UIView继承自UIResponse,再继承NSObject,所以可以响应事件;CALayer直接继承自NSObject,不能响应方法。
UIView侧重于对显示内容的管理,CALayer侧重于对显示内容的绘制。
UIButton的父类是?UIView的父类是?
UIButton --> UIControl --> UIView --> UIResponder --> NSObject
9.Core Data
10.交叉引用与循环引用
11.多线程?
- GCD的死锁用同步的方式给主队列添加任务。
13.常用的网络请求方式。