0

在 Xcode 5 之前,我用于在 .h 文件中的视图控制器之间发送参数

NSString *test;

@property (nonatomic, strong) NSString *test;

并在 .m 中使用

@synthesize test;

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

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

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

4

1 回答 1

0

两个建议:

  1. 不要显式声明实例变量 (ivars) 来备份您的属性。综合属性时,它会自动为您创建 ivar。如果您像上面一样手动创建 ivar,您只会引入一个机会,最终会出现拼写错误,从而导致两个 ivar,其中一个将是nil. 再显式声明您的实例变量没有任何好处,只会引入问题。

  2. 我什至不建议再有自己的@synthesize线路了。编译器会为您执行此操作,它会执行与@synthesize test = _test. 这是遵循最佳实践,即您的实例变量的名称中应该有一个前导下划线,从而最大限度地减少在您打算使用属性时意外使用 ivar 的机会。

就正在发生的事情而言,可能有很多事情,但是如果没有看到更完整的代码示例就很难判断,但我怀疑您手动定义的实例变量存在问题。

于 2013-06-30T16:06:28.087 回答