Похоже, что объект в categoryArray
освобождается до того, как вы его используете. Адрес памяти затем повторно используется для другого объекта, который оказывается __NSArrayM
.
Вы присваиваете свою переменную в viewDidLoad
.
categoryArray = [myapp getCategory];
Невозможно увидеть содержимое getCategory
, но я подозреваю, что возвращаемое значение автоматически высвобождается. Следовательно, вам нужно взять на себя ответственность за объект, чтобы он зависал после конца текущего метода.
Вы должны использовать сеттер:
[self setCategoryArray:[myapp getCategory]];
или сохраняя возвращаемое значение:
categoryArray = [[myapp getCategory] retain];
Кроме того, вы должны переименовать этот getCategory
метод. По соглашению методы, начинающиеся с get
, имеют конкретное значение: они принимают указатель на указатель в качестве аргумента и помещают значение в это место для использования вызывающей стороной. См., Например, -[NSArray getObjects:range:]