id __weak obj1 = obj;
以上代码会被编译成:
id obj1;
objc_initweak(&obj1,obj)
objc_destroyWeak(&obj1)
objc_initweak会将被引用对象作为值,引用对象的地址作为键注册到weak表中,所有的weak变量都会被注册到这个weak表中,weak表与引用计数表相同,都是作为散列表而实现,由于一个对象可同时赋值给多个有__weak修饰的变量,因此,在weak表中一个值可被不同的弱引用地址注册到weak表中
微信扫一扫
id __weak obj1 = obj;
以上代码会被编译成:
id obj1;
objc_initweak(&obj1,obj)
objc_destroyWeak(&obj1)
objc_initweak会将被引用对象作为值,引用对象的地址作为键注册到weak表中,所有的weak变量都会被注册到这个weak表中,weak表与引用计数表相同,都是作为散列表而实现,由于一个对象可同时赋值给多个有__weak修饰的变量,因此,在weak表中一个值可被不同的弱引用地址注册到weak表中
相关推荐