iOS修饰符

一.strong与weak

为什么UI控件一般用weak就可以?

  因为我们在添加UI控件的时候一般会用addSubview操作,在addSubview的时候,就给该控件添加了一个强引用,所以在该对象被手动置为nil之前,或removeFromSuperView之前,或该控制器销毁之前,该控件不会被释放.addSubview不能等到该对象被释放后再使用.

  如果控制器定义了一个控件用strong修饰,那么该控件被该控制器强引用,如果再用addSubview,那么该控件就有两个强引用,如果该控制器被销毁,该控件也仍然会被销毁.

  如果该属性是一个控制器,如果用addChildViewController:的话,原理与一般UI控件一样,如果只用[self.view addSubview:vc2.view],那么该控制器对vc2没有强引用,vc2很容易被释放调.

  给一个对象置为nil,该对象不一定会被释放,如果该对象有两个强引用,置为nil就不能被释放,但是向该对象发送任何消息都不会有反应.

 

二.copy和strong

为什么NSString和NSArray一般用copy?

三. 

 

posted @ 2016-08-22 00:07  wwh99  阅读(174)  评论(0编辑  收藏  举报