首页 > 代码库 > __strong 修饰符

__strong 修饰符

__strong 修饰符
__strong 是id类型和所有对象类型默认的所有权修饰符

__strong 表示对对象的强引用,在ARC中持有强引用变量在超出其作用域或强引用失效(如被置为nil),则引用对象被自动释放

      id __strong obj1=[[NSObject allocinit]; /* create object A */

        /*

         * obj1持有对对象A的强引用

         */

        id __strong obj2=[[NSObject allocinit]; /* create object B*/

        /*

         * obj2持有对对象B的强引用

         */

        id __strong obj3=nil;

        /*

         *obj3不持有任何对象

         */

        obj1=obj2;

        /*

         * obj1持有对对象B

         * 对象A没有持有者,因此A释放

         */

        obj3=obj1;

        /*

         * obj1,ojb2,obj3共同持有对象B

         */

        obj1=nil;

        /*

         * ojb2,obj3共同持有对象B

         */

        obj2=nil;

        /*

         * obj3共同持有对象B

         */

        obj3=nil;

        /*

         * 对象B没有持有者,故释放

         */

       总结:

        自己生成的对象,自己持有

          非自己生成的对象,自己也能持有

         不再需要自己持有的对象时释放

         



__strong 修饰符