我在获取数据时使用块来执行操作,但是什么时候释放之前创建的数组?
GKLeaderboard *leaderboardRequest = [[GKLeaderboard alloc] init];
if (leaderboardRequest != nil) {
[leaderboardRequest loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) {
// do stuff
// release leaderboardRequest here?
}];
}
// or here?
它似乎在另一个线程上工作,所以我担心如果我最后释放它,我可能会干扰完成代码。
释放 LeaderboardRequest 是安全的,因为该块将确保保留局部变量,直到代码完成。 LeaderboardRequest 将是不可变的,除非定义为__block
但我怀疑您是否需要更改参考。
阅读块编程主题 http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/bxVariables.html.
GKLeaderboard *leaderboardRequest = [[GKLeaderboard alloc] init];
if (leaderboardRequest != nil) {
[leaderboardRequest loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) {
// do stuff
// release leaderboardRequest here? NO!
}];
}
// Here
[leaderboardRequest release];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)