iphone ARC - как установить объект на ноль? - PullRequest
0 голосов
/ 25 января 2012

У меня есть логика, которая проверяет, является ли объект нулевым или нет, как я могу установить его на ноль?

Как:

// in some method
if (true){
 [self myObj] = [[myObj alloc]init];
} else{
 [self myObject] = nil; //??? How to do this with Automatic Ref. Counting
}

// elsewhere
if([self myObj]){

}

Ответы [ 4 ]

4 голосов
/ 25 января 2012

Ваш код неверен.

Вам необходимо использовать свойства и присваивать им значения, например [self setMyObject:nil]; или [self setMyObj:[[myObj alloc] init]];.

3 голосов
/ 25 января 2012

Ваш код неверный. Попробуйте:

self.myObject=nil;
//or
[self setMyObject:nil];

Также убедитесь, что myObject является свойством в вашем классе, иначе использование self не сработает.

2 голосов
/ 25 января 2012

[self myObj] не присваивается, так как не является lvalue.Чтобы это исправить, либо обратитесь к базовой переменной, например, self->myObj, либо используйте [self setMyObj:], если вы используете свойства.

1 голос
/ 25 января 2012

Вы используете геттер в качестве сеттера.Это не сработает.Это должно быть

[self setMyObj:[myObj alloc]init]]; 

И

[self setMyObj:nil];

При условии, что вы реализовали сеттеры.В ARC вам не нужно, если вы просто получаете доступ к ivar - вы можете получить к нему доступ напрямую, и подсчет ссылок будет сделан для вас:

myObj = [MyObj alloc] init];

И

myObj = nil;

Будет устанавливать и удалять все для вас.

...