-(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
的函数那么该块有没有强大的自我指针?当self,这是一个viewController从navigationController中消失后,它会很快被释放吗?
确切地说,该块不是指自我。该块指的是调用一个引用self的方法的weakSelf。然而,该方法中的自我是弱自我。
基本上我跟着这个:
- (void)dealloc
{
[_loAIOnebyOne vCancelAllStuffs];
}
事实证明,只有在块完成后才会调用dealloc。所以块必须包含自我。但是如何?
另外,我如何知道哪个对象仍然引用我的对象?
引用我的对象的唯一对象应该是UINavigationController对象。下一个是在堆栈上执行的块。
答案 0 :(得分:-3)
weakSelf需要是一个块变量。复制块时,它会创建自己的变量,其中包含weakSelf的副本,并且该副本不弱。