以下文档的示例代码如下:
ref/doc/uid/TP40008304-CH6-SW9
清单4-9显示游戏中心用户界面的主板页面
- (void) showLeaderboard: (NSString*) leaderboardID
{
GKGameCenterViewController *gameCenterController = [[GKGameCenterViewController alloc] init];
if (gameCenterController != nil)
{
gameCenterController.gameCenterDelegate = self;
gameCenterController.viewState = GKGameCenterViewControllerStateLeaderboards;
gameCenterController.leaderboardTimeScope = GKLeaderboardTimeScopeToday;
gameCenterController.leaderboardCategory = leaderboardID;
[self presentViewController: gameCenterController animated: YES completion:nil];
}
}你什么时候在GKGameCenterViewController上叫“释放”?应该是在视图控制器被取消之后,还是可以在此方法的末尾调用它?还是应该叫自动释放?
发布于 2015-05-04 05:30:40
该项目使用自动参考计数,因此不需要显式声明释放或取消分配。作为参考,它将在视图离开视图层次结构后被解除分配。
发布于 2015-05-04 08:40:35
我找不到任何文档来支持这一点(因为苹果的所有文档现在都假定为ARC),但我记得在ARC之前的日子里,你发布了一个模态视图控制器。我相当肯定,呈现视图控制器将对呈现的视图控制器进行强有力的引用。所以:
- (void) showLeaderboard: (NSString*) leaderboardID
{
GKGameCenterViewController *gameCenterController = [[GKGameCenterViewController alloc] init];
if (gameCenterController != nil)
{
gameCenterController.gameCenterDelegate = self;
gameCenterController.viewState = GKGameCenterViewControllerStateLeaderboards;
gameCenterController.leaderboardTimeScope = GKLeaderboardTimeScopeToday;
gameCenterController.leaderboardCategory = leaderboardID;
[self presentViewController: gameCenterController animated: YES completion:nil];
[gameCenterController release];
}
}一个更好的答案可能是,“使用ARC”。认真地说,ARC规则。
https://stackoverflow.com/questions/30022706
复制相似问题