2011-08-22 74 views
1

请看下面的代码。如何从另一个类设置NSString *属性?

FirstViewController.h:

@interface FirstViewController : UIViewController { 
    NSString* inputData; 
} 

@property (nonatomic, copy/retain) NSString* inputData; 

FirstViewController.m:

@synthesize inputData; 

SecondViewController.m:

- (IBAction)buttonSaveDown { 
    [firstViewController setInputData:@"Text"]; 
    firstViewController.inputData = @"Text"; 
    firstViewController.inputData = [[NSString stringWithString:@"Text"] retain]; 
} 

与inputData每一行后面添加断点。检查firstViewController.inputData - 它是'(null)'!为什么?

Printing description of inputData: 
(null) 

另外我尝试在编辑器中编辑值。设置值后,结果也为'(null)'。

构建中没有任何警告。请帮助任何人。非常感谢!

给版主:对不起,有人删除了同一个前面的问题,当我要求删除它的所有评论。

+1

FirstViewController是否已初始化?同样在你设置inputData的第三次尝试中,如果@property指令被设置为复制或保留,则不需要保留调用,这实际上会导致内存泄漏。 –

+3

您确定firstViewController在buttonSaveDown方法中有效吗?如果它为零,那么这些都不会起作用。 – Flyingdiver

回答

3

firstViewController变量没有设置任何东西。您需要将其设置为FirstViewController的有效实例,然后才能对其执行任何有用的操作。

1

只需使用

@property (nonatomic, retain) NSString* inputData; 

然后将这些各应工作:

[firstViewController setInputData:@"Text"]; 
firstViewController.inputData = @"Text"; 
firstViewController.inputData = [NSString stringWithString:@"Text"]; 
+0

不要帮助。 inputData:'(null)'。对不起,但这是不正确的答案。 – Dmitry

+1

无论如何,就我所知,'copy/retain'是一种无效的语法。选择其中一个。请参阅http://stackoverflow.com/questions/387959/nsstring-property-copy-or-retain关于哪些建议。 –

相关问题