Добавление объекта в NSMutableArray - странное поведение - PullRequest
0 голосов
/ 20 февраля 2019

У меня очень странная проблема.Я создаю объект и добавляю его в NSMutableArray, но когда я пытаюсь прочитать его после того, как вставляю, некоторые подклассы объекта меняются на странные классы, такие как

PINGIFAnimatedImageManager

Вот код, который я использую для создания объекта и вставки его в NSMutableArray:

CustomContentGridRow *row = [[CustomContentGridRow alloc]init];
row.child1 = [dataManager getMapLocation]; // This is the MapLocation object that will change to this weird PINGIFAnimatedImageManager
row.useFullWidth=1;
row.index=0;
[arrCustomChilds addObject:row];

Это класс CustomContentGridRow:

@interface CustomContentGridRow : NSObject

@property (nonatomic, assign) MapLocation *child1;
@property (nonatomic, assign) MapLocation *child2;
@property (nonatomic, assign) int useFullWidth;
@property (nonatomic, assign) int index;

@end

Поэтому, когда я ставлю точку остановав этой строке [arrCustomChilds addObject:hotelRow];, когда я читаю объект row, я получаю ожидаемые результаты.Но когда я ставлю точку останова после кода выше, чтобы прочитать arrCustomChilds, класс child1 меняется на несколько странных классов.Кроме того, иногда это не изменится на другой класс, но даст нулевые значения.

Есть идеи, почему это происходит?

Ответы [ 3 ]

0 голосов
/ 20 февраля 2019

Ваш интерфейс должен быть:

@interface CustomContentGridRow : NSObject

@property (nonatomic, strong) MapLocation *child1;
@property (nonatomic, strong) MapLocation *child2;
@property (nonatomic, assign) int useFullWidth;
@property (nonatomic, assign) int index;

@end

объекты класса должны быть сильными, а не назначаться

0 голосов
/ 21 февраля 2019

Вы должны изменить модификатор свойства с «назначить» на «сильный» для объектов класса.В противном случае может произойти неопределенное поведение.

0 голосов
/ 20 февраля 2019

В Xcode -> Product -> Scheme - отредактируйте Scheme.Проверьте настройки режима RUN.Если это Release, измените на Debug.

Это даст вам правильные значения

Измените нижеприведенные свойства

@property (nonatomic, strong) MapLocation *child1;
@property (nonatomic, strong) MapLocation *child2;

назначить для сильного

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