Я получаю путать с тем, как обращаться с целыми числами в Objective C.Objective-C обработка целочисленные значения
Если я определяю следующие:
NSInteger i = 6;
NSLog(@"%d", i);
Я ожидаю, что это напечатать 6 к консоли.
Однако у меня есть NSInteger внутри объекта, который явно ссылается на указатель, поэтому я получаю очень разные результаты.
Например:
@interface Section : NSObject {
NSInteger Id;
}
@property (nonatomic, assign) NSInteger Id;
Пожалуйста, предположим, это был синтезирован в реализации.
Я создаю объект установить его значение и доступ к нему снова следующим образом:
Section *section = [[Section alloc] init];
section.Id = 6;
NSMutableArray *sections = [[NSMutableArray alloc] init];
[sections addobject:section];
Section *sectionB = [setions objectAtIndex:0];
NSLog(@"%d", sectionB.Id);
Это странный эффект печати адреса памяти то число, как 5447889. Почему я не могу просто получить значение?
Я попытался с помощью:
NSInteger sid = [[section Id]integerValue];
Но тогда я получаю предупреждение Недопустимый тип приемника NSInteger ' и иногда получаю ошибки программа получил сигнал: «EXC_BAD_ACCESS».
Мне очень хотелось бы знать, как обращаться с целыми числами или любыми значениями в этом отношении.
Большое спасибо
В настоящее время я не могу опубликовать полный код, потому что im далеко от моего mac. Я не знаю, что это помогает, но в моем производственном коде значение section.Id устанавливается из данных, обработанных json. Это может быть вопрос кастинга? Что касается числа, которое я опубликовал 5447889, это были лишь некоторые случайные номера примеров. – Chris
Вы должны подтвердить значение, которое вы * устанавливаете * 'Id' для. –