0

我是 obj C 的新手,并且来自非常好的 C++ 背景。我启动了 iOS 开发,并制作了一个我在视图中使用的自定义对象。这个自定义对象是

    @interface GameData : NSObject{
    @private
        int Lives;
        ...
        bool isAnswered[5];
    };

    -(int)getLives;
    -(void)LivesPlusOne;
    ...
    -(void)increasePoints:(int)howManyPoints ;
    -(int)getMult;
    ...
    -(void)markAsAnswered:(int)idToRemove; //idToRemove is marked as answered
    -(bool)isMarkedAsAnswered:(int)idToCheck;
    @end

我的问题是,尽管 XCode 可以识别并自动完成诸如 gameData.getLives 之类的方法;并编译它们就好了(我使用 #import "GameData.h" ),它不适用于带有参数的方法,例如:

    -(bool)isMarkedAsAnswered:(int)idToCheck;

这可能是问题所在?(我已经尝试删除派生数据(窗口->组织者->项目->派生数据->删除)并且没有任何改变。

额外信息:我在视图中使用 gameData 对象,我通过访问器和突变器(getter/setter)操纵“int Lives”等,并且工作得很好。当我开始使用

    [gameData.isMarkedAsAnswered:someInt] 

我收到构建错误。

我输入时它甚至不会自动完成

    [gamedata.i

提前致谢, 乔治斯

4

1 回答 1

0
[gameData.isMarkedAsAnswered:someInt]

您正在混淆 C++ 和 Objective-C 语法。您使用点访问器来引用声明的属性,而不是方法。使用以下内容:

[gameData isMarkedAsAnswered:someInt];

由于实现问题,当方法没有参数时,您可以使用点访问器调用它,但这不是它的设计目的,您应该立即停止这样做。

于 2012-07-27T14:12:13.817 回答