2017-05-31 75 views
0

通常,我們將@autoreleasepool稱爲ARC中的自動釋放池。漏極電流自動釋放池如何?

@autoreleasepool { 
    MyObject* object = [[MyObject alloc] init]; 
} 
//do something 

現在我希望所有MyObject對象倒掉,而我叫MyFunction

- (void)MyFunction 
{ 
    //[[NSAutoReleasePool defaultAutoReleasePool] drain]; 
    //do something 
} 

我知道@autoreleasepool創建一個新的池。我只想MyFunction排空默認池或當前池,這可以確保在自動釋放池中的所有未使用的MyObject在一般情況下都是耗盡的。

這可能嗎?

回答

0

@autoreleasepool { ... }創建並刪除(排空)一個新的autoreleasepool。您無法手動排除當前的autoreleasepool。有時可能需要釋放池中的物體。在這種情況下,你應該使用嵌套池,如:

@autoreleasepool { // Initial pool 
    ... 
    for(...) { 
     @autoreleasepool { 
      // Using large amount in ARP 
     } 
    } 
    ... 
} 

BTW:您的第一個上市的對象不是一個ARP的一員,因爲它是一個alloc的結果 - init通話,這樣的話你有它的所有權(見Memory Management Rules)。