【发布时间】:2023-12-13 02:50:01
【问题描述】:
1) *说:“weak (_weak) 和assign (_assign) 的区别在于,当变量指向的对象被释放时,变量的值是否在是否更改。弱的将被更新为 nil,而分配的将保持不变,作为悬空指针。"
但是在我尝试了这样的 Xcode 示例之后
__weak NSObject *obj1 = [[NSObject alloc] init];
[obj1 release];
如果Wiki 是对的,那么发布后obj1 指向的地址必须是nill。但是obj1指向的地址还是0xabcdef...
维基错了吗?
2) 帮我区分__weak, __block, __assign?
【问题讨论】:
-
没有
__assign这样的东西。您可以使用assign属性定义属性,但没有__assign关键字,就像__weak一样。__block与您问题的主要部分完全无关。 -
那么维基是对还是错???
-
我读过那个话题,但我仍然不了解 __weak, __block
-
*的文章是正确的。但请理解,该变量可能不会立即设置为
nil。在某些情况下,它直到稍后才设置为nil。其中一些可能取决于优化级别。
标签: objective-c memory-management block null weak-references