Дали NSInteger автоматично се присвоява на 0

Аз съм доста нов в програмирането на Objective-C, така че моля да ме извините за глупавия въпрос. Ако създам NSInteger както следва:

@property (nonatomic) NSInteger myNumber;

присвоява ли се на някакво произволно цяло число като „C“ или автоматично се присвоява на „0“?

също така къде е най-разумното място да го присвоите, като се отбележи, че това ще бъде в контролер за изглед, който може или не може да получи тази стойност от друг контролер за изглед.

В този момент съм параноичен и използвам NSNumber, така че поне да мога да тествам за нула, но се надявах да видя дали мога да направя това по-добре.


person ThinkBonobo    schedule 04.01.2014    source източник
comment
Бихте могли да създадете свое собствено тестово приложение, за да разберете това сами, нали знаете? Освен това не пречи да го инициализирате сами   -  person hd1    schedule 05.01.2014
comment
hd1 - Проблемът с това да го тествам сам е, че може да получавам нула и това няма да докаже, че винаги ще бъде 0 и не е нещо специфично за моята настройка. @creker. Въпреки че зададеният въпрос е различен, отговорът определено е същият, разпределете 0 на стойността. Благодаря за вашата помощ!   -  person ThinkBonobo    schedule 05.01.2014
comment
@ThinkBonobo Прочетете SO отговора, посочен от creker.   -  person zaph    schedule 05.01.2014
comment
По-конкретно, този отговор ще бъде полезен за вас: stackoverflow.com/a/3115012/1445366   -  person Aaron Brager    schedule 05.01.2014
comment
Променливите на екземпляр/свойство винаги се инициират на нула/нула.   -  person Hot Licks    schedule 05.01.2014
comment
@hd1 - Тестът няма да докаже нищо. Може да получите нула 1000 пъти и различна от нула при 1001-ия опит, или след повторно компилиране, или само ако друго приложение е стартирано първо или каквото и да е.   -  person Hot Licks    schedule 05.01.2014


Отговори (2)


Според коментара на Creger,

Погледнах резултата за Ints винаги ли се инициализират на 0?

NSInteger наистина се инициализира до нула, както и всички променливи на екземпляр на класа.

Това е коментарът за документацията на ябълките:

Методът alloc има още една важна задача, която е да изчисти паметта, разпределена за свойствата на обекта, като ги занули на нула. Това избягва обичайния проблем с паметта, съдържаща боклук от всичко, което е било съхранено преди, но не е достатъчно, за да инициализира напълно обект.

За по-подробен отговор, включително как това не се отнася за malloc, моля, вижте приетия отговор за публикацията https://stackoverflow.com/a/990826/2668545

person ThinkBonobo    schedule 05.01.2014

По подразбиране е 0. Мисля, че сте го задали грешно.

person kkocabiyik    schedule 04.01.2014
comment
@Aaron Brager безполезен коментар! - person zaph; 05.01.2014