在Xcode 5之前,我用于.h文件中的viewcontrollers之间的发送参数
NSString *test;
@property (nonatomic, strong) NSString *test;
并在.m中使用
@synthesize test;
并在第一个视图控制器中使用:
SecondViewController *testC = [[SecondViewController alloc] init];
testC.test = @"Something ...!";
但它总是在调试器中显示null是什么问题还是有其他方法?
答案 0 :(得分:0)
两个建议:
不要显式声明实例变量(ivars)来备份属性。合成属性后,它会自动为您创建ivar。如果您手动创建ivar,如上所述,您只会引入一个错误的机会,从而产生两个ivars,其中一个将是nil
。明确声明实例变量没有任何好处,只会引入问题。
我甚至不建议拥有你自己的@synthesize
行。编译器为您执行此操作,它执行与@synthesize test = _test
等效的操作。这是遵循最佳实践,您的实例变量应在其名称中具有前导下划线,从而最大限度地减少在您想要财产时意外使用ivar的可能性。
就发生的事情而言,它可能是很多东西,但是如果没有看到更完整的代码示例就很难分辨,但我怀疑手动定义的实例变量存在一些问题。