【问题标题】:Error with Objective-C code or me?Objective-C 代码或我的错误?
【发布时间】:2012-02-19 21:40:25
【问题描述】:

我是 Objective-C 代码的新手,但我正在尝试从我的书“Head First iPhone Development”中学习,但我的“*decisionText;”遇到了一些问题在 .m 文件中。

@synthesize decisionText;
no declaration of property 'decisionText' found in the interface

那么代码有什么问题?我使用的版本是 Xcode3 with Snow Lepor (10.6.8)。 我错过了什么吗?

【问题讨论】:

  • 在 XCode 产品开发的这个阶段,“谁错了”问题的答案几乎总是“是你”。不需要阅读整个问题:)
  • 您应该了解@synthesize 的作用——它为给定属性生成所谓的访问器方法的实现。这里的问题(如下面的多个答案所述)是您没有在界面中声明该属性。
  • 您应该检查(打勾)您认为最能回答您的问题的答案,以适当地奖励回答者。

标签: objective-c properties


【解决方案1】:

无意冒犯,但可能是你的问题,而不是 Objective-C。您需要在 .h 文件中声明一个匹配的属性(接口中的 AKA)。

例如:

@property (retain) NSString* decisionText;

【讨论】:

  • 属性声明通常在头文件中,但也可以在实现文件中的类扩展中。
  • 非常感谢! ^_^ 我在玩,想改变代码会有什么伤害,我做到了,它现在可以工作了!我只是一个愚蠢的孩子,我能说什么?
【解决方案2】:

您在类的实现中添加@synthesize decisionText;

@implementation MyClass
//...
@synthesize decisionText;
//...

找到对应的接口声明(在.h或.m文件中)并添加:

@interface MyClass
//...
@property DecisionTextType *decisionText;
//...

其中DecisionTextTypedecisionText 的类型,可能是NSString

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多