类扩展不可用的合成方法

时间:2014-04-06 15:25:08

标签: objective-c

好的,我很困惑。我有一个类Employee,我声明了几个属性,当然,这些属性合成并且工作正常。但是在实现类中,我像这样扩展了类:

@interface Employee ()
    @property (nonatomic) unsigned int employeeId;
@end

我认为这将允许我在main.m中执行以下操作:

Employee emp = [[Employee alloc] init];
//use some other property accessor methods...
[emp setEmployeeId:123456];

//do some other stuff...

但是编译器对setEmployeeId的使用扼杀了以下错误"No visible interface for 'Employee' declares the selector 'setEmployeeId.'

有谁能告诉我为什么我不能像使用其他属性那样使用扩展名?谢谢你的帮助!!!

1 个答案:

答案 0 :(得分:3)

因为您的employeeId属性是私有的'如果您已使用类的.m文件中的延续类别声明它。这意味着编译器不会看到'编译期间的定义 - 因此是数组。

从技术上讲,您仍然可以在运行时使用KVC访问它,但您应该确定该属性是公共还是私有。

如果您正在测试/搞乱,那么您可以在本地类别中重新声明该属性,以使其在编译期间可见。