Доступ к NSMutableArray из другого класса - PullRequest
0 голосов
/ 09 марта 2011

У меня есть класс, в котором сформирован объект NSMutableArray, например:

navBarColour = [[NSMutableArray alloc] initWithObjects:colourOfNavBar, nil];

У меня есть другой класс, к которому правильно добавлен первый класс, но он не позволит мне получить доступNSMutableArray из первого класса.Эта строка кода:

NSLog(@"%@", [HandlingPalettes.navBarColour objectAtIndex:0]);

Возвращает:

Ожидается ':' до '.'токен

Но:

NSLog(@"%@", [navBarColour objectAtIndex:0]);

будет работать в исходном классе.

Что я здесь не так делаю?

Ответы [ 3 ]

3 голосов
/ 09 марта 2011

Точечная запись в цели c используется иначе, чем в c ++ или java.В target-c это сокращение для доступа к свойству.Сначала нужно определить свойство target-c, например:

в файле .h (внутри тега интерфейса)

@property (nonatomic, retain) NSMutableArray *navBarColor;

в файле .m (внутри реализацииtag)

@synthesize navBarColor;

Только тогда вы сможете получить доступ к массиву с точечной нотацией.

1 голос
/ 09 марта 2011

(На самом деле, futureelite7 и Radek S не совсем корректны, так как вам не нужно объявление @property для использования точечной нотации. Если есть метод-получатель с именем navBarColour, то точечная нотация тоже подходит для этогоНо это еще одна проблема.)

Объявление для свойства navBarColour должно быть видимым для вашего кода, содержащего NSLog.Да, постите свой заголовочный файл, если вы говорите, что добавленное объявление @property также не может быть скомпилировано, значит, у вас происходит что-то странное.Убедитесь, что ваш другой класс .m включает этот заголовок, и что класс HandlingPalettes не просто объявлен с помощью предварительного объявления скажем (@class Blah;).

Но также это HandlingPalettesкласс или экземпляр?!?Идентификаторы, начинающиеся с прописных букв по соглашению, подразумевают имя класса, так что это подозрительно.Если это имя класса, то это, безусловно, не то, что вам нужно.

(Что касается использования точечной нотации без @property, если HandlingPalettes действительно является классом, то если у вас есть метод класса +(NSMutableArray*)navBarColour, тогдакогда он будет компилироваться.)

0 голосов
/ 09 марта 2011

Вы должны добавить свойство к объекту, содержащему массив, и синтезировать его:

@property(nonatomic, retain) NSMutableArray *navBarColour;

Кроме того, измените компилятор на Clang, и сообщения об ошибках будут более понятными, если хотите.

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