【问题标题】:Disable Objective-C automatic property synthesis for a class?禁用类的Objective-C自动属性合成?
【发布时间】:2013-06-25 10:29:00
【问题描述】:

我正在编写一个包装类,它使用动态运行时将消息转发到被包装的对象,使用forwardInvocation:

但是类型检查器现在抱怨这些方法没有在我的包装类上实现,这通常是一件好事。

所以我想我会在包装器的标头中编写一些方法声明以满足类型检查器的要求。请注意,我只想要声明,而不是定义。

但是,当我复制 @property 指令时,它们不仅被声明,而且还被定义,这样它们就优先于方法转发,因此它会中断转发。

那么有没有办法声明一个@property 并且不让它自动合成getter 和setter?我喜欢这个功能,所以我只想在每个班级的基础上禁用它,并将它留在项目的其余部分。有点像-fno-objc-arc

附: clang -v => $ Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)

【问题讨论】:

    标签: objective-c clang


    【解决方案1】:

    如果你添加

    @dynamic yourProperty;
    

    到类的实现,那么就没有实例变量和访问器函数 为该属性合成。

    【讨论】:

    • 不幸的是,这不会产生关于缺少访问器方法的单一警告,并且应用程序将在访问属性时崩溃。
    猜你喜欢
    • 2012-05-25
    • 1970-01-01
    • 2015-12-16
    • 2012-03-14
    • 2014-08-25
    • 2012-09-05
    • 2013-02-01
    • 2013-05-22
    • 1970-01-01
    相关资源
    最近更新 更多