我在获取数据时使用块来执行操作,但是何时释放我之前创建的数组?
GKLeaderboard *leaderboardRequest = [[GKLeaderboard alloc] init];
if (leaderboardRequest != nil) {
[leaderboardRequest loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) {
// do stuff
// release leaderboardRequest here?
}];
}
// or here?
它似乎适用于另一个线程,所以我担心如果我在最后发布它,我可能会干扰完成代码。
答案 0 :(得分:1)
释放leaderboardRequest是安全的,因为该块将确保在代码完成之前保留局部变量。除非用__block
定义,否则leaderboardRequest将是不可变的但我怀疑你需要更改引用。
GKLeaderboard *leaderboardRequest = [[GKLeaderboard alloc] init];
if (leaderboardRequest != nil) {
[leaderboardRequest loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) {
// do stuff
// release leaderboardRequest here? NO!
}];
}
// Here
[leaderboardRequest release];