iOS和OS X的名为Pro MultinReading和Memory Management的书都写了
为什么需要在autoreleasepool中注册对象才能通过___weak合格变量使用对象?因为有资格获得__weak的变量没有很强的参考,因此可以在任何时候处置该对象。如果对象在AutoreLeasePool中注册,则直到剩下@autoreleasepool块为止,必须存在该对象。因此,要安全地使用__ weak变量使用对象,该对象会自动注册。
我不明白为什么__卫星需要变量存在。__ weak不保留变量。如果不存在该变量。_______weak变量应为nil。为什么本书说"如果对象在AutoreleAsepool中注册,直到剩下@AutoreEleasepool块,则必须存在该对象"。p>,如果它在AutoreLeasePool中注册。池已注册?我在使用__ Weak时不会供应AutoreAleasepool。谁能告诉我为什么。
您正在阅读的书至少令人困惑,有时可能是彻底错误的,它在其介绍__weak
和__autoreleasing
预选赛中。(这本书是翻译,这可能说明了有时使用的语言。)
存储在__weak
合格变量中的引用也自动添加到自动发行池中,这与弱变量相反。
发生的事情是,在某些情况下,当从弱变量中加载引用时,它将被编译器放置在自动发行池中以避免种族条件(在释放的对象与其从弱变量中加载的引用之间)。至少您不需要直接关注自己 - 编译器只是确保您从弱变量中加载的参考文献是有效的。
您可以在" apureleeAsepool"中注册的问题comproping objective -c中找到本书的其他评论?
hth