我有以下代码:
[GetUserData getUserDataWithBlock:^(UserData *userData, NSError *error)
{
self.userData = userData;
#1 self.userData.fbUser = user;
// Call REST API of server 'GetAllWords'
[GetAllWords getAllWordsWithBlock:^(NSSet *newWords, NSError *error)
{
[self saveAllWords:newWords];
#2 [self showRootView];
}];
}];
问题是,self.userData
在#1中正确设置(并且不为空),但是当我到达#2时,self.userData
变为空...
点#1是我设置self.userData
的唯一地方。
答案 0 :(得分:2)
如果将userData
属性定义为weak
(特别是如果getAllWordsWithBlock
异步运行),我可以想象您描述的行为。
如果没有,我建议在基础变量上设置“监视”:
在代码中设置一个断点#(在大概#2点),并在调试器中启动应用程序;
当调试器在您的第一个断点处停止时,通过右键单击(或 control -clicking)对变量添加一个监视支持userData
属性的变量在“变量”视图中选择“监视”(显然,此屏幕快照是一段不同的代码,但它说明了如何在Xcode中创建“监视”):
点击继续按钮继续执行:
当你点击一个监视断点时,有时你会盯着汇编程序,但是你可以点击“跳出”按钮,直到找到你认可的代码中的某个点。 / p>
这有助于识别变量的变化(如果不是简单的weak
属性问题)。