Хранение NSNumber в NSMutableArray - PullRequest
0 голосов
/ 30 июня 2011

У меня есть следующие объявления в моем model.h:

@interface Model: NSObject {
NSMutableArray *myMutableArray;
....
}
@property (nonatomic) double myDouble;

Соответствующий @synthesize в model.m:

@synthesize myDouble;

Затем у меня есть следующее переопределение сеттера:

-(void) setMyDouble: (double) newDouble{
myDouble = newDouble;
[myMutableArray addObject:[NSNumber numberWithDouble:myDouble]];
}

Помещая точку останова после назначения массива, отладчик показывает следующее для myMutableArray:

myMutableArray = (_NSArrayM *) 0x631c450 1 объектов

0= (NSCFNumber *) 0x631c6a0

Итак, мой двойник, похоже, неправильно попадает в массив.У меня есть последующие назначения для этого массива для строк NSStrings, которые хорошо отображаются в отладчике.Значения как для myDouble, так и для newDouble хороши (обычно это просто целые числа).

Я прочитал несколько потоков о назначении двойных значений для NSMutableArrays и не нашел ничего необычного.Любое руководство будет оценено.

Обновление

Кажется, что код правильный, но я не смог понять, что отладчик показывает адрес NSNumber, а не его значение.Спасибо всем за отклик, высоко ценится!:)

Ответы [ 2 ]

7 голосов
/ 30 июня 2011

Кажется, вы путаете с 0 в 0 = (NSCFNumber *) 0x631c6a0. Это 0 является индексом NSNumber в массиве. Если вы извлечете объекты из массива и напечатаете его в NSLog, он покажет вам правильные значения. В вашем коде нет ничего неправильного.

1 голос
/ 30 июня 2011

Вы забыли выделить свой изменяемый массив. Отладьте ваше приложение и посмотрите, выделен ли массив или нет.

Редактировать

Измените имя вашей функции на что-то другое и увидите магию.

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