在Objective-C中,对象不能是方法参数。那么如何创建相互指向的对象呢?

时间:2010-08-12 00:39:18

标签: objective-c

[Objective-C的新手,正在努力解决其他语言中直截了当的问题。]

我想做这样的事情:

@interface GameBoard : NSObject {
    // ..
GameState *parentGameState;
}

- (GameBoard) initStartGame (GameState *) parent;

这样GameState(其中有一个GameBoard指针作为成员)可以创建一个GameBoard,而GameBoard又有一个指针返回创建它的GameState。

然而,似乎在Objective-C中,对象和指向对象的指针都不是方法参数。

那么创造一对物体的成语又是什么呢?必须有办法,否则你不能做基本的事情,例如双重链表。

1 个答案:

答案 0 :(得分:4)

指向对象的指针可以是方法参数,只是语法错误

 - (id) initStartGame: (GameState *) parent; // you forgot the colon

init方法通常会返回id - 但是如果要返回特定类型,请使用GameBoard*,这不是惯用的。

您可能需要使用@class进行转发声明(以避免相互导入)。

所以而不是

#import "GameState.h"

使用

@class GameState;

在GameBoard.h中