【问题标题】:Synthesized Methods for Class Extension Unavailable类扩展的综合方法不可用
【发布时间】:2014-04-06 15:25:07
【问题描述】:

好吧,我很困惑。我有一个 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.'

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

【问题讨论】:

    标签: objective-c


    【解决方案1】:

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

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

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

    【讨论】:

    • 是的,它与可见性有关(我的回答错了)。您甚至可以在单独的头文件中定义类扩展,并将其包含在您需要的任何地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 2010-11-25
    • 2019-06-07
    • 1970-01-01
    相关资源
    最近更新 更多