Отправить копию класса для просмотра класса, чтобы он мог отрендерить его? (iPhone) - PullRequest
0 голосов
/ 02 апреля 2010

Я делаю игру для iPhone, и у меня есть класс под названием Robot.

Тогда у меня есть класс View, который отображает все.

Я хочу отправить копию своего робота, который я определил в своем ViewController, и я отправляю его в gameView (то есть View * gameView), например:

robot = [Robot new];
[gameView setRobot: [robot copy]];

Я пытался сделать копию, но это не сработало, я мог также сделать это с указателем на Робота (и робота), но иногда он просто зависал?

Я попробовал это в своем определении View.h @interface:

@property (copy) Robot* robot;

но я получаю ошибку

/RobotsAdventure/Classes/View.h:24: error: setter '-robot' argument type does not match property type

/

Помощь? Я новичок в этом, хе.

1 Ответ

0 голосов
/ 02 апреля 2010

Чтобы скопировать объект, его класс должен реализовать протокол NSCopying.

См. Руководство по программированию управления памятью для какао

Самый простой способ выполнить то, что вы хотите, это:

view.h

#import "Robot.h"
@property(nonatomic,retain) Robot *robot.

Затем установите его так в контроллере вида:

// myView is of class View.h
myView.robot=self.robot;

Кстати, присвоение имени классу View просто вызывает конфликт имен в какой-то момент. Хуже того, вы никогда не будете помнить, что класс делает месяцы в будущем, когда вы вернетесь к нему. Вы также не сможете найти его. Вместо этого используйте очень описательное имя, например RobotDisplayView_MyProjectName. С автозаполнением, это займет больше времени, чем короткое имя.

...