【问题标题】:Trying to name Delegate method per conventions, Xcode "expecting a type"试图根据约定命名委托方法,Xcode“期待一个类型”
【发布时间】:2015-04-27 14:26:26
【问题描述】:

我有一堂课GameController

我有一个委托方法来更新玩家的分数。

naming conventions:

通过识别发送消息的对象的类来开始名称:

我正在尝试命名方法:

-(void) GameController: (GameController *) game didUpdatePlayerScore:(NSInteger)score;

但是 Xcode 告诉我它需要一个 (GameController *) 的类型。

该协议在GameController.h 文件中定义,并且 AutoComplete 在键入时提供 GameController 作为建议,因此我不知道除了不遵循约定之外如何继续。

【问题讨论】:

  • 你在声明你的协议之前做了@class GameController;吗?并且您应该以小写字母 (gameController: didUpdatePlayerScore:) 开头方法名称。
  • @Larme 我不知道。我认为应该在#import <Foundation/Foundation.h> 之后完成?那成功了。如果你把它作为一个答案,我会接受它。谢谢。

标签: ios objective-c xcode cocoa


【解决方案1】:

这是你写的:

#import "WhateverNeeded"

@protocol CustomDelegate <NSObject>
-(void)gameController:(GameController *)game didUpdatePlayerScore:(NSInteger)score;
@end

@interface GameController : NSObject
@end

问题是你还不知道GameController。这是一个未知的类。
这就是为什么你必须把@class GameController; 放在@protocol 声明之前。它是Forward Declaration(你可以寻找它,因为它用于各种事情)换句话说,它说:“别担心,GameController 存在,它是在之后的某个地方声明的”。

奖励:方法以小写开头(gameController:ZzZGameController:ZzZ)。

【讨论】:

    猜你喜欢
    • 2012-08-05
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多