Доступ к свойству из метода C в Какао - PullRequest
1 голос
/ 31 марта 2009

Я пытаюсь изучить Objective C и Cocoa, но мне просто не удается получить доступ к свойству внутри объекта. В частности, объект из метода C. Я работаю с библиотекой динамики бурундука.

У бурундука есть что-то похожее на NSPoint, называемое cpVect. Теперь у меня нет проблем с определением cpVect внутри моего объекта, но когда я пытаюсь заставить методы доступа использовать @property & @synthesize, я продолжаю получать ошибки: так

@interface ControlsLayer : Layer {
    Sprite * touchMarker, *dragMarker;
    cpVect * forceVector;
}

отлично работает

но

@interface ControlsLayer : Layer {
    Sprite * touchMarker, *dragMarker;
    cpVect * forceVector;
}

@property (retain) cpVect forceVector;

@end

дает мне ошибку "property 'forceVector' with 'retain' must be of object type"

так что без 'retain' я получаю другую ошибку

"type of property 'forceVector' does not match type of ivar 'forceVector'"

Я хожу по кругу, пытаясь выяснить это, есть ли конкретный тип, который я могу использовать, это несовместимость между бурундуком и какао, или ... или ... я не знаю. Бурундук очень легок в документации, и все примеры, которые я нашел, похоже, не используют объекты, все примеры просто используют один класс для обработки всего.

Любая помощь, высоко ценится. Эта вещь сводит меня с ума.

Ответы [ 2 ]

4 голосов
/ 31 марта 2009

Ошибка, которую вы получаете, заключается в том, что семантика retain (т. Е. Управление памятью с подсчетом ссылок с установщиком, увеличивающим счетчик ссылок на новое значение и уменьшающим счетчик ссылок на старое значение), имеет смысл только для цели -С объектов. Семантика по умолчанию для свойств retain, но вы можете указать, что свойство будет assign примерно так:

@property (assign) cpVect *forceVector;

где я предполагаю, что свойство на самом деле cpVect*, а не cpVect, как вы написали.

2 голосов
/ 31 марта 2009

У вас есть указатель на cpVect в вашем экземпляре Variable, но нет в вашем свойстве.

Попробуйте это:

@property (assign) cpVect * forceVector;

...