之前看的面试题,只是简单的property关键字weak的作用是什么?最常见的用法又是什么?答案呢,千篇一律。
比如:作用就是不造成强引用,不影响指针所指向对象的生命周期。
用来声明delegate。
其实,本质是:
runtime对注册的类进行管理,将weak作为value,用weak指向的对象的内存地址作为key,存入hash表。当weak指向对象的retainCount为0时,对象会被放入待销毁的autoreleasePool,当pool中对象接收到pop以及release的消息时,会以对象的内存地址作为key,在hash表中搜索,以该key存储的weak,然后进行删除操作。
网友评论