我有这段代码:
-(IBAction) doSomething{
FirstViewController *firstViewController = [[[FirstViewController alloc]init]autorelease];
[firstViewController.label1 setAlpha:1.00];
[firstViewController.label2 setAlpha:1.00];
}
-(void) do{
//use firtsViewController in this method
}
正如您在示例中所看到的,我使用FirstViewController类的对象“firstViewController”,但是如果我想在方法“do”中使用相同的对象?我该怎么办
答案 0 :(得分:4)
在标题中有......
FirstViewController *firstViewController;
然后用...替换你的方法
-(IBAction) doSomething{
if(firstViewController == nil) {
firstViewController = [[FirstViewController alloc]init];
}
[firstViewController.label1 setAlpha:1.00];
[firstViewController.label2 setAlpha:1.00];
}
并添加..
- (void)dealloc {
[firstViewController release];
[super dealloc];
}
答案 1 :(得分:0)
你的'firstViewController'只对你的doSomething方法是本地的,在这个方法之外它不存在!如果要跨方法使用它,可以考虑将其实现为包含您使用它的方法的类的成员变量吗?
答案 2 :(得分:-1)
由于do
没有参数,并且你用不同的方法声明控制器,你不能。
你可以做几件事,但最明显的是:
do
接受FirstViewController
类型的参数或其超类,然后传入。firstViewController
并在doSomething
中对其进行实例化,稍后您将在do
中使用它。