В Objective-C объекты не могут быть параметрами метода. Как я могу создавать взаимно указывающие объекты тогда? - PullRequest
0 голосов
/ 12 августа 2010

[Новое в Objective-C, борющееся с вещами, которые просты в других языках.]

Я хотел бы сделать что-то вроде этого:

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

- (GameBoard) initStartGame (GameState *) parent;

, чтобы GameState (который имеет указатель GameBoard в качестве члена) может создать GameBoard, который в свою очередь имеет указатель на GameState, который его создал.

Однако, похоже, что в Objective-C не могут быть ни объекты, ни указатели на объектыПараметры метода.

Так что же такое идиома для создания пары объектов, каждый из которых указывает на другой?Должен быть способ, иначе вы не могли бы выполнять такие базовые вещи, как, например, двусвязные списки.

1 Ответ

4 голосов
/ 12 августа 2010

Указатели на объекты могут быть параметрами метода, у вас просто неправильный синтаксис

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

методы init обычно возвращают id - но если вы хотите вернуть определенный тип, используйте GameBoard*, что не будет идиоматическим.

Возможно, вам потребуется сделать предварительное объявление с @class (чтобы избежать взаимного импорта).

Так что вместо

#import "GameState.h"

использование

@class GameState;

в GameBoard.h

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...