【问题标题】:"No visible @inteface ... declares ..." error for properties“没有可见的@inteface ...声明...”属性错误
【发布时间】:2012-04-16 16:34:38
【问题描述】:

为什么会这样:

[object propertyName:propertyValue] 在 Xcode 4.3 和 Lion 中导致上述异常,但 object.propertyName=propertyValue 可以正常工作吗? 有问题的@property 是一个简单的浮点数,我也使用过@synthesize。

我对 Objective C 比较陌生,但在 C# 方面有相当多的经验,并且一直在阅读 Aaron Hillegass 关于该主题的书,其中两种方法被列为同义词,[...] 是首选。

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    setter 方法的名称与属性不同。在将其作为方法调用时,您需要 setPropertyName 而不是 propertyName。 getter 仍然只是属性名称。

    请参阅How to write my own setter for an ivar 了解一个很好的例子。

    【讨论】:

      【解决方案2】:

      当您使用@property@syntesize 声明变量时,系统会为您编写get 和set 方法。在此您需要使用[object setPropertyName:propertyValue]。您也可以使用object.propertyName=propertyValue,但这是一种 C 编程风格。

      【讨论】:

      • 非常感谢!使用没有“set”前缀的属性确实会导致问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      • 2017-10-25
      • 1970-01-01
      • 2019-08-02
      相关资源
      最近更新 更多