Компилятор XCode не устанавливает начальное значение моей переменной (и указателя) в 0 или nil! - PullRequest
0 голосов
/ 21 октября 2010

Это очень раздражает, так как теперь мои значения хранятся так, как будто они содержат что-то по умолчанию (как в c).Все мои OO вещи теперь сломаны, так как мой делегат всегда что-то.Мне было интересно, почему XCode делает это со мной, так как по умолчанию XCode всегда устанавливает значение переменной в 0 или nil.

Так что, если я делаю NSArray * anArray;а затем NSLog (% @ "% @", anArray);

Может произойти сбой или запись в память последней выделенной памяти.Это очень расстраивает

Ответы [ 2 ]

2 голосов
/ 21 октября 2010

C, Objective C и C ++ все инициализируют глобальные переменные в ноль / ноль / ноль.Локальные переменные не инициализируются автоматически и должны быть явно инициализированы.

Кроме того, указатель на NSArray является , а не NSArray.Прежде чем использовать этот указатель, вы должны сделать так, чтобы NSArray действительно находился в конце его.Например, сделать новый, что-то вроде

    // NSArray* anArray = new NSArray;  // if using a C++ backend
    NSArray* anArray = [[NSArray alloc] init];  // if using an Objective-C backend
    // ...
    NSLog(%@"%@", anArray);
1 голос
/ 21 октября 2010

Объектив C в этом отношении ведет себя так же, как и С, то есть неглобальные переменные не инициализируются по умолчанию. Используйте защитный код и всегда инициализируйте переменные-указатели явно (либо в NULL, либо в действительный адрес).

...