试图根据约定命名委托方法,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:ZzZGameController:ZzZ)。

【讨论】:

以上是关于试图根据约定命名委托方法,Xcode“期待一个类型”的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript 中类属性的命名约定

Xcode / Objective-C Facebook 委托尝试

试图(View)

DAO 方法的标准命名约定

对于在同一类中设置全局变量的例程,啥是好的命名约定

API命名约定,URI中的相同资源名词