Different among __weak, __block and __assign?
本问题已经有最佳答案,请猛点这里访问。
1)维基百科说:"弱(weak)和赋值(assign)的区别在于,当变量指向的对象被释放时,变量的值是否会改变。弱的将更新为零,分配的将保持不变,作为悬空指针。"
但我在Xcode中尝试过这样的示例之后
1 2 | __weak NSObject *obj1 = [[NSObject alloc] init]; [obj1 release]; |
如果wiki是正确的,那么obj1所指的地址在发布后必须是
2)帮助我区分
"归零弱引用"的
您的代码显然是用MRC(手工引用计数)编译的。在那种情况下,
1 | __weak attribute cannot be specified on an automatic variable when ARC is not enabled [-Wignored-attributes] |
因此,释放对象对
如果将代码转换为ARC,则必须删除
1 | assigning retained object to weak variable; object will be released after assignment [-Warc-unsafe-retained-assign] |
对象将被释放并立即将