2010-06-12 20 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"]; 
相關問題