@property objective-c的自定义setter / getter

时间:2013-04-17 09:00:42

标签: ios objective-c cocoa-touch

拥有自定义属性:

@property (nonatomic, readwrite) SIListVCDisplayType displayType;

当我引用它时,它必须是displayType,而不是_displayType。为什么?我认为实例变量需要在名字之前加_吗?

如果我写的话:

@property (nonatomic, strong) NSArray *test;

然后它有效....

2 个答案:

答案 0 :(得分:1)

我会说无论如何你应该使用self.displayType,如果你使用@synthesize。如果不是(正如标题中所示),您应该始终在班级中创建自己的SIListVCDisplayType并根据需要为其命名。

如果您创建一个名为NAME的属性,在大多数情况下,您似乎也会在类中获得_NAME参数。这是因为C的目标是如何工作的,而不是你应该如何使用它。创建自己的并绑定到。我完全没有理由认为这种类型的命名和创建变量背后的变量将保持不变,所以除非你发现一些文档说不然可能会发生你的代码甚至在更新后都不会编译。

答案 1 :(得分:0)

您确定可以使用displayType访问属性ivar 吗? 我已尝试重现您的问题,我已将@property与枚举类型UAProducStatus一起使用,但我无法使用displayType访问它,但我可以使用_displayType

我可以猜到你要么定义了局部变量,要么用同名的ivar,或者你有 @synthesize displayType = displayType;