Оба они все еще находятся "в интерфейсе", поэтому ваш заголовок немного запутан, но я понимаю, что вы спрашиваете.
Во многих случаях результат любого подхода будет одинаковым, но они разные. Свойство IBOutlet будет вызывать метод установки свойства, который дает вам возможность переопределить этот метод установки, если установка этого свойства должна иметь некоторый побочный эффект.
Я предпочитаю использовать выходы для свойств, потому что я думаю, что это делает управление памятью объектов, загруженных из пера, намного более четким. Взгляните на управление памятью nib-объектов , и я думаю, вы поймете, что я имею в виду.
Объекты в файле пера создаются с счетом сохранения 1 и затем автоматически высвобождаются. Поскольку он перестраивает иерархию объектов, UIKit восстанавливает соединения между объектами, используя setValue: forKey :, который использует доступный метод установки или сохраняет объект по умолчанию, если метод установки не доступен. Это означает, что (при условии, что вы следуете шаблону, показанному в «Розетках»), любой объект, для которого у вас есть розетка, остается действительным. Однако, если есть объекты верхнего уровня, которые вы не храните в торговых точках, вы должны сохранить либо массив, возвращенный методом loadNibNamed: owner: options:, либо объекты внутри массива, чтобы предотвратить преждевременное освобождение этих объектов.
IBOutlet ivars вызовет сеттеры для этих иваров, если они существуют, и непосредственно сохранит объект, загруженный из пера, если сеттер не найден.
Объявление свойства как IBOutlet, по крайней мере, дает понять, что установщик свойства всегда будет использоваться и следовать тому правилу управления памятью, которое было установлено для этого свойства.
Наконец, я утверждаю, что IBOutlets являются частью открытого интерфейса класса, и поэтому лучше использовать методы (через свойство) для работы с ними, чем использовать -setValue: forKey: для манипулирования вспомогательными ivars, деталь реализации.