2013-03-22 4 views
1

Я новичок в Objective-C, поэтому, пожалуйста, простите меня, если этот вопрос глупо! Но я хотел бы знать, что это значит.Что делает setDetailItem: Do?

- (void)setDetailItem:(id)newDetailItem 
{ 
    if (_detailItem != newDetailItem) { 
     _detailItem = newDetailItem; 

     // Update the view. 
     [self configureView]; 
    } 
} 

Что именно эти строки делают в контроллере подробного представления? Означает ли это, что новый объект, т. Е. newDetailItem создан и назначен уже существующему detailItem? Я не понимаю.

ИЛИ

ли это на самом деле означает, что этот новый объект равен детали, которые присутствуют в «detailItem» уже. Итак, не следует ли это писать как newDetailItem = _detailItem, чтобы этот новый объект получал значения _detailItem?

Это своего рода смутило меня немного :(

Спасибо за ваше время!

+1

Почему нет, чтобы купить книгу и начать изучать obj-c или искать онлайн-уроки –

+0

Я сделал это, но эта строка на самом деле смутила меня. Так что я закрутился. – Raj0689

ответ

5

Код, который вы показываете, является типичным примером метода «сеттер», который присваивает новое значение свойству; в этом случае - свойство "detailItem".

Этот метод обычно вызывается в одном из двух способов, либо в явном виде:

[someObject setDetailItem:someDetailItem]; 

или с помощью точечной нотации:

someObject.detailItem = someDetailItem; 

_detailItem является переменной экземпляра, или "Ивар"; это локально-локальное место, где фактически сохраняется значение свойства. Этот код проверяет, действительно ли назначенное новое значение действительно отличается от старого значения, затем назначает его и вызывает побочный эффект, предположительно обновляя некоторый пользовательский интерфейс, чтобы отобразить новое значение.

Ваше замешательство, по-видимому, частично связано с именем параметра на этот метод «newDetailItem». Имя здесь произвольное и не означает, что что-то создается. Это новое в смысле нового значения для свойства, а не нового объекта.

+0

Ничего не объяснено :) –

+0

Не могли бы вы объяснить, почему мне нужно реализовать метод setDetailItem для изменения объекта DetailItem, где мне не нужен какой-либо метод для любых других объектов, таких как NSMutableString .... – NULL

+0

thanks :) Это решает. – Raj0689

1

Этот метод установки новое значение newDetailItem в _detailItem.

В даного if (_detailItem != newDetailItem) это проверяя, являются ли оба объекта одинаковыми или нет, путем сравнения мест расположения памяти.

_detailItem = newDetailItem; новыйDetai lItem, который передается как id, помещается в _detailItem.

В случае ARC: значение сохраняется/копируется, как в ARC, это не указывается.

Вы обращаетесь непосредственно к вашей собственности на _detailItem. У вас есть свойство, называемое detailItem в вашем классе.

И затем вызов метода configureView.