每次我展示我的新viewcontroller(作为presenter vc中的属性),如下所示:
if(self.viewController) [self.viewController release];
self.viewController = [[ViewController alloc] init];
[self presentModalViewController:self.viewController animated:YES];
所以我总是保证得到一个新的对象实例(如果该对象已经存在)。
但是现在我使用ARC并且没有任何想法如何发送我的对象发布消息(因为不适用于ARC)
你能帮我解决这个问题吗?
PS:每当我呈现gameVC时,我都需要一个新的对象实例。
全部谢谢!
答案 0 :(得分:2)
self.viewController = [[ViewController alloc] init];
[self presentModalViewController:self.viewController animated:YES];
以上代码将始终显示一个新的vc,而apple的编译器将负责发布。
但是如果你认为上面有一些问题(这是一个神话)那么你也可以这样做
self.viewController = nil;
self.viewController = [[ViewController alloc] init];
[self presentModalViewController:self.viewController animated:YES];
答案 1 :(得分:1)
编译器会为您发布发布说明。你应该只使用这个代码,它应该工作正常:
self.viewController = [[ViewController alloc] init];
[self presentModalViewController:self.viewController animated:YES];
答案 2 :(得分:0)
self.viewController = [[ViewController alloc] init];
[self presentModalViewController:self.viewController animated:YES];
是正确的方法。
但是,即使您使用手动引用计数,此代码也可以,假设viewController
是具有self
或retain
标志的strong
属性。当您更改属性值时,先前的属性值将被释放,因此您无需自行释放它。
答案 3 :(得分:0)
您不应该持有指向视图控制器的指针。 我很确定你的代码应该是这样的:
ViewController *viewController = [[ViewController alloc] init];
[self presentModalViewController:viewController animated:YES];