Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何理解这一点;当使用带有“弱限定符”的变量时,对象始终在autoreleasepool中注册;_Ios_Objective C_Nsautoreleasepool - Fatal编程技术网

Ios 如何理解这一点;当使用带有“弱限定符”的变量时,对象始终在autoreleasepool中注册;

Ios 如何理解这一点;当使用带有“弱限定符”的变量时,对象始终在autoreleasepool中注册;,ios,objective-c,nsautoreleasepool,Ios,Objective C,Nsautoreleasepool,名为Pro Multithreading and Memory Management for iOS和OS X的书写道 为什么需要在autoreleasepool中注册对象才能通过_弱限定变量使用对象?因为用_弱限定的变量没有强引用,所以该对象可能会在任何时候被丢弃。如果该对象在autoreleasepool中注册,则在@autoreleasepool块离开之前,该对象必须存在。因此,为了通过_弱变量安全地使用对象,对象将自动注册到autoreleasepool中 我不明白为什么变量存在__弱不

名为Pro Multithreading and Memory Management for iOS和OS X的书写道

为什么需要在autoreleasepool中注册对象才能通过_弱限定变量使用对象?因为用_弱限定的变量没有强引用,所以该对象可能会在任何时候被丢弃。如果该对象在autoreleasepool中注册,则在@autoreleasepool块离开之前,该对象必须存在。因此,为了通过_弱变量安全地使用对象,对象将自动注册到autoreleasepool中

我不明白为什么变量存在__弱不保留变量。如果变量不存在,_弱变量应为零。为什么这本书说“如果对象在autoreleasepool中注册,直到@autoreleasepool块离开,对象必须存在”


如果它是在autoreleasepool中注册的。它注册了哪个池?当我使用u-weak时,我没有分配autoreleasepool。谁能告诉我原因。

你正在读的书在其
\uu-weak
\uu-autoreleasing
限定符的表示中至少令人困惑,有时可能完全错误。(这本书是翻译的,这可能解释了有时使用的令人困惑的语言。)

存储在
\u弱
限定变量中的引用也不会自动添加到自动释放池中,这与弱变量的用途相反

在某些情况下,当引用从弱变量加载时,编译器会将其放在自动释放池中,以避免竞争条件(在对象被释放和引用从弱变量加载之间)。您不需要担心,至少不需要直接担心——编译器只是确保从弱变量加载的引用在您使用它时是有效的

你可以在问题中找到关于这本书的其他评论