2010-08-03 6 views

ответ

3

@property: вы использовали его, когда вы хотите:

Вы можете использовать некоторые из действительно полезных сгенерированного кода как неатомической, atmoic, сохранить без написания каких-либо строк кода. У вас также есть методы getter и setter. Чтобы использовать это, у вас есть еще два способа: @synthesize или @dynamic: @synthesize, компилятор автоматически сгенерирует getter и setter, @dynamic: вы должны сами написать их.

@property действительно хорош для управления памятью, например: сохранить.

Как вы можете сохранить без @property?

if (_variable != object) { 
    [_variable release]; 
    _variable = nil; 
    _variable = [object retain]; 
    } 

Как вы можете использовать его с @property?

self.variable = object; 

Когда вы вызываете выше линию, вы на самом деле назвать сеттер, как [само SetVariable: объект], а затем сгенерированным сеттер будет делать свою работу

+1

Быстрое оповещение - если вы выполняете сохранение без @property, убедитесь и убедитесь в том, что вы сами назначаете! if (variable_! = Object) [variable_ release]; В противном случае вы можете в конечном итоге высвободить свою единственную ссылку на объект, и вызов сохранения на нем после его выпуска будет плохим. –

+0

ах да, это правильно – vodkhang

+0

Мне нужна определенная ситуация для использования iphone sdk – harlram

2

@property (наряду с @synthesize) автоматически генерирует set и/или get код. Таким образом, следующий код:

self.prop = @"some string"; 

эквивалентно

[self setProp: @"some string"]; 

Отметим также,

self.prop = @"some string"; 

отличается от

prop = @"some string"; 

последнее устанавливает переменную непосредственно, в то время как первый называет метод getProp, чтобы установить переменную prop.

Смежные вопросы