文档介绍:精品文档
精品文档
1
精品文档
ios面试题
-C是一门动向的语言?
-c类的种类和数据变量的种类都是在运行是确定的,而不是在编译时确定。比方:多态特性,我们能够使属性相对应的
成员变量。
精品文档
精品文档
36
精品文档
属性的默认重点字是什么?
默认重点字,基本数据:atomic,readwrite,assign
普通的OC对象:atomic,readwrite,strong
,如果用strong会有什
么问题?(注意:这里没有说用strong就一定不行。使用
copy和strong是看情况而定的
尽人皆知,我们知道,可变种类
(NSMutableArray,NSMutableString等)是不可边种类
(NSString,NSArray等)的子类,因为多态的原因,我们能够
使用不可边种类去接受可变种类。
当我们使用strong修饰A不可边种类的时候,并且使用B
可变种类给A赋值,再去改正可变种类B值的时候,A所指
向的值也会发生改变。引文strong只是让创立的对象引用计
数器+1,并返回目前对象的内容地点,当我们改正B指向的
内容的时候,A指向的内容也同样发生了改变,因为他们指
向的内存地点是相同的,是一份内容。
精品文档
精品文档
11
精品文档
,并且使用B
可变种类给A赋值,再去改正可变种类B值的时候,A所指
向的值不会发生改变。因为当时用copy的修饰的时候,会
拷贝一份内容出来,并且返回指针给A,当我们改正B指向
的内容的时候,A指向的内容是没有发生改变的。因为A指
向的内存地点和B指向的内存地点是不相同的,是两份内容
(NSString,NSArray等)的时候,且使
用不可边种类进行赋值,表示浅拷贝,只拷贝一份指针,和
strong修饰同样,当修饰的是可变种类
(NSMutableArray,NSMutableString等)的时候,且使用可
边种类进行赋值,表示深拷贝,直接拷贝新一份内容,到内存中。表示两份内容。
?
如果想让自己的类具备copy方法,并返回不可边种类,必
须按照nscopying协议,并且实现
-(id)copyWithZone:(NSZone*)zone
精品文档
精品文档
12
精品文档
如果让自己的类具备mutableCopy方法,并且放回可变种类,
精品文档
精品文档
36
精品文档
必须恪守NSMutableCopying,并实现-
(id)mutableCopyWithZone:(nullableNSZone*)zone
注意:再此说的copy对应不可边种类和mutableCopy对应不可边种类方法,都是遵照系统规则而已。如果你想实现自己的规则,也是能够的。
有什么区别?如果是会合是内容复制的话,会合里面的元素也是内容复制么?
可变使用copy表示深拷贝,不可变会合类使用copy的时候是浅拷贝。
可变会合类、不可边种类使用mutablecopy表示深拷贝
当是浅拷贝的时候,容器的内容是没有复制的。如果是深拷
贝的话,容器的内容都会收到一条copy消息,拷贝出新的内容,从头组成新的容器返回。
精品文档
精品文档
14
精品文档
?
精品文档
精品文档
36
精品文档
在xib或许Sb拖控件时,其实控件就加载到了父控件的
精品文档
精品文档
16
精品文档
subviews
数组里面,进行了强引用,即便使用了
weak
,也
精品文档
精品文档
36
精品文档
不造成对象的释放。
精品文档
精品文档
36
精品文档
?atomic是绝对的线程安全
么?为什么?如果不是,那应当怎样实现?
nonatomic:表示非原子,不安全,可是效率高。
atomic:表示原子行,安全,可是效率低。
atomic:不能绝对保证线程的安全,当多线程同时接见的时候,会造成线程不安全。能够