2010-06-12 54 views
0

这工作得很好:Objective-C的传递变量到另一个IBAction为

NSString *myVariable; 

- (IBAction) doFirstAction { 
myVariable = @"123456789"; 
} 

- (IBAction) doSecondAction { 
NSLog(@"%@",myVariable); 
} 

但是,如果我这样做(代替@“123456789”的一些代码,返回相同的值,即“123456789”)我无法访问doSecondAction中的值。

NSString *myVariable; 

- (IBAction) doFirstAction { 
myVariable = [imageNode getAttributeName:@"value"]; 
} 

- (IBAction) doSecondAction { 
NSLog(@"%@",myVariable); 
} 

任何线索为什么我不能访问doFirstAction以外的myVariable?

回答

2

你需要保留它

myVariable = [[imageNode getAttributeName:@"value] retain]; 

看到also

+0

非常感谢您的帮助。 – StuR 2010-06-12 13:25:07

0

这样做将是定义不固定你的存取方法的另一种方式。因此,在你的接口定义:

@property (retain) NSString *myVariable; 
在您的实现

及更高版本:

@synthesize myVariable; 

现在的Xcode为您生成getter和setter方法将处理保留声明为您服务。但是,现在您需要使用点符号,因为等号不会被覆盖,除非您这样做,否则不会调用您的setter方法:

self.myVariable = [imageNode getAttributeName:@"value"];