Objective-C将变量传递给另一个IBAction

时间:2010-06-12 13:06:44

标签: objective-c

这很好用:

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 个答案:

答案 0 :(得分:2)

你需要保留它

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

请参阅also

答案 1 :(得分:0)

另一种方法是定义一个为您保留的访问器方法。因此,在您的界面定义中:

@property (retain) NSString *myVariable;

以及稍后的实施:

@synthesize myVariable;

现在Xcode为您生成getter和setter方法,为您处理retain语句。但是,您现在需要使用点表示法,因为不会覆盖等号,并且除非您这样做,否则不会调用您的setter方法:

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