所以我有以下代码:在块内分配一个变量需要弱引用?
[serviceHandler getHomeConfigurationData:^(NSDictionary *data){
if (data) {
NSLog(@"The Data: %@", data);
homeConfigData = data;
}
} failure:^(NSError *error, BaseServiceHandler *context){
homeConfigData = Nil;
NSLog(@"Error: %@", error);
}];
在这里
,homeConfigData
是我的ViewController一个实例变量。整个方法在后台线程上完成。一旦完成块返回/被触发,ViewController可能会被释放。所以我很担心,如果我在线路上遇到问题时homeConfigData = data;
我该如何处理?
如果weakSelf变成零,我们得到Nil = data。这是否会导致崩溃? 另外,我是否正确地假设我应该这样做? 另外我不能做weakSelf.homeConfigData,因为“homeConfigData”是一个实例变量 – user1416564
我没有关注你的担忧。 weakSelf应该是一个指向实例的指针,所以使用一个实例变量不应该成为问题。 'data'不会是零,但'weakSelf.homeConfigData = data'将是一个空操作,因为'weakSelf'将是零。如果您还有其他问题,请发布更多代码。 –
好的,让我再试一次。 'homeConfigData'是一个私有变量。这意味着你不能执行'self.homeConfigData'。它不会编译。无论如何,我设法找出一个解决方案,并在前面使用'__block'声明'homeConfigData'。 – user1416564