试图根据约定命名委托方法,Xcode“期待一个类型”
Posted
技术标签:
【中文标题】试图根据约定命名委托方法,Xcode“期待一个类型”【英文标题】:Trying to name Delegate method per conventions, Xcode "expecting a type" 【发布时间】: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>
之后完成?那成功了。如果你把它作为一个答案,我会接受它。谢谢。
【参考方案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:ZzZ
与 GameController:ZzZ
)。
【讨论】:
以上是关于试图根据约定命名委托方法,Xcode“期待一个类型”的主要内容,如果未能解决你的问题,请参考以下文章