在视图控制器之间发送参数

时间:2013-06-30 15:35:03

标签: iphone objective-c parameters

在Xcode 5之前,我用于.h文件中的viewcontrollers之间的发送参数

NSString *test;

@property (nonatomic, strong) NSString *test;

并在.m中使用

@synthesize test;

并在第一个视图控制器中使用:

SecondViewController *testC = [[SecondViewController alloc] init];
testC.test = @"Something ...!";

但它总是在调试器中显示null是什么问题还是有其他方法?

1 个答案:

答案 0 :(得分:0)

两个建议:

  1. 不要显式声明实例变量(ivars)来备份属性。合成属性后,它会自动为您创建ivar。如果您手动创建ivar,如上所述,您只会引入一个错误的机会,从而产生两个ivars,其中一个将是nil。明确声明实例变量没有任何好处,只会引入问题。

  2. 我甚至不建议拥有你自己的@synthesize行。编译器为您执行此操作,它执行与@synthesize test = _test等效的操作。这是遵循最佳实践,您的实例变量应在其名称中具有前导下划线,从而最大限度地减少在您想要财产时意外使用ivar的可能性。

  3. 就发生的事情而言,它可能是很多东西,但是如果没有看到更完整的代码示例就很难分辨,但我怀疑手动定义的实例变量存在一些问题。