-(void) vAfterMainVariable
{
__weak BGGeneralCatalogView * weakSelf=self;
[_loAIOnebyOne vLoadStuffsWithURLBlock:^(){
NSString * URL= [weakSelf strGetURLToDownloadStuffs];
return URL;
} andPermaToastMessage: @"Loading Catalog" andCompletionBlock:^{}];
//[self.loAIOnebyOne vLoadStuffsWithURLBlock:<#^NSString *(void)blURL#> andPermaToastMessage:<#(NSString *)#> andCompletionBlock:<#^(void)completionBlock#>]
}
-(NSString *) strGetURLToDownloadStuffs
{
NSString * URL = [BGMakeURL URLforGetCatalogID:self.arArray];
return URL;
}
我在塊中使用weakSelf。然而,那個weakSelf指的是一個叫做self的函數.arArray該塊是否包含對自我的引用?
那麼這個塊會有強的指向自我的指針嗎?當自我,這是一個viewController從navigationController消失了,它會很快被釋放?
確切地說,該塊並不是指自我。該塊指的是weakSelf,它調用一個引用自我的方法。然而,該方法中的自我是弱自我。
基本上我遵循與此:
- (void)dealloc
{
[_loAIOnebyOne vCancelAllStuffs];
}
而事實證明的dealloc根本就沒有叫後才塊是終點。所以塊必須包含自我。但是如何?
另外我如何知道哪個對象仍然指向我的對象?
引用我的對象的唯一對象應該是UINavigationController對象。下一個將是在堆棧上執行的塊。
你在做什麼很好。 – rmaddy
在實踐中,創建一個可能的強保留週期有什麼意義? – holex
實際上自己沒有指向該塊的指針。我只是不想等到塊完成運行直到自我釋放。所以堆棧引用了該塊。 –