面试题(每日更新)

2016-04-15  本文已影响54人  MarkTang

1.什么情况使用weak关键字,相比assign有什么不同?

什么情况下使用weak关键字?
1.在ARC中,在有可能出现循环引用的时候,往往要通过让其中一端使用weak来解决,比如delegate代理
2.自身已经对它进行一次强引用,没有必要再强引用一次,此时也会使用weak,自定义IBOutlet控件属性一般也使用weak,当然也可以使用strong
不同点:
1.weak此特质表明该属性定义了一种"非拥有关系"。为这种属性设置新值时,设置方法既不保留新值,也不释放旧值.此特质同assign类似,然而在属性所指的对象遭到摧毁时,属性值也会清空(nil out)。而assign的“设置方法”只会执行针对"纯量类型"(例如 CGFloat 或NSInteger)的简单赋值操作。
2.assigin可以使用非OC对象,而weak必须使用OC对象。

2.这个写法会出什么问题:

@Property(copy) NSMutableArray *array

两个问题:
1.添加,删除,修改数组内的元素的时候,程序会因为找不到方法而奔溃,因为copy就是复制一个不可变NSArray的对象,2.使用了atomic属性会严重影响性能,因为属性默认的修饰符就是atomic。
在iOS开发中一般都会使用nonatomic属性修饰,但在开发Mac OS X程序中使用atomic修饰属性通常不会有性能瓶颈.

3.Category和extension的区别

4.define和const常量有声明区别?

5.block和weak修饰符的区别?

6.static关键字的作用

7.堆和栈的区别

8.@property的本质是什么?

9.

上一篇 下一篇

猜你喜欢

热点阅读