我希望你能幫我解決我的實際問題:從其他類訪問NSStrings
我用導航控制器設置了一個新項目。對於項目的表格視圖,我添加了一個新的類,名爲「TableViewController.h」和「TableViewController.m」。
在該類別中從來就屬性.ha宣佈爲一個的NSString從其他類訪問它,這樣的:
@property (strong, nonatomic) NSString *testString;
在.M從來就合成它如下:
@synthesize testString;
現在我設置在 - (無效)的tableView:(UITableView的*)的tableView didSelectRowAtIndexPath方法:(NSIndexPath *)表視圖控制器indexPath-方法如下:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
testString = @"Hello, World!";
}
現在爲下一個視圖創建一個新的UIViewController類,當我點擊一個單元格時(所有工作到目前爲止),它應該會出現。在這個名爲「SecondView」的UIViewController中,我導入了TableViewController的.h文件。 而且我有這樣的代碼在SecondView.m:
-(void) viewDidLoad
{
[super viewDidLoad];
TableViewController *demoObject = [TableViewController alloc] init]
NSLog (@"Teststring is: %@" [demoObject.testString]);
}
現在,當我啓動模擬器我得到這樣的輸出: 的TestString是:(空)
當我的NSLog將TestString在TableViewController我得到「你好,世界「,但爲什麼不是」轉移「到SecondView類並生成所需的輸出?
請理解面向對象編程。做'[[TableViewController alloc] init]'創建一個新類的實例,這個類與你之前創建的類的任何其他實例完全分離。因此,以前創建的實例中設置的任何值都將無法從新實例訪問。 –
哦,親愛的,你是對的!這是一個正確的方向,謝謝! –