Меня смущает, как обрабатывать целые числа в 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».
Мне бы очень хотелось знать, как правильно обрабатывать целые числа или любые значения в этом отношении.
Огромное спасибо