Объявления IBOutlet?

Я видел, что код ниже записанных 3 различных путей (относительно IBOutlet) Делает он имеет значение, я сказал бы, что добавление IBOutlet и к объявлению и к @property было более кратким.

ПРОСТО СВОЙСТВО:

@class SwitchViewController;

@interface iPhone_switcherAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    SwitchViewController *switchViewController;
}

@property(nonatomic, retain) IBOutlet UIWindow *window;
@property(nonatomic, retain) IBOutlet SwitchViewController *switchViewController;
@end

ПРОСТО ОБЪЯВЛЕНИЕ:

@class SwitchViewController;

@interface iPhone_switcherAppDelegate : NSObject <UIApplicationDelegate> {
    IBOutlet UIWindow *window;
    IBOutlet SwitchViewController *switchViewController;
}

@property(nonatomic, retain) UIWindow *window;
@property(nonatomic, retain) SwitchViewController *switchViewController;
@end

ОБА:

@class SwitchViewController;

@interface iPhone_switcherAppDelegate : NSObject <UIApplicationDelegate> {
    IBOutlet UIWindow *window;
    IBOutlet SwitchViewController *switchViewController;
}

@property(nonatomic, retain) IBOutlet UIWindow *window;
@property(nonatomic, retain) IBOutlet SwitchViewController *switchViewController;
@end

аплодисменты gary

11
задан fuzzygoat 5 February 2010 в 11:50
поделиться

4 ответа

Не имеет значения. С помощью 10.6 64-битного SDK вы можете также написать свойство без ivar:

@class SwitchViewController;

@interface iPhone_switcherAppDelegate : NSObject <UIApplicationDelegate> {
}

@property(nonatomic, retain) IBOutlet UIWindow *window;
@property(nonatomic, retain) IBOutlet SwitchViewController *switchViewController;
@end
7
ответ дан 3 December 2019 в 05:34
поделиться

Текущий стиль в примере кода Apple ставит IBOutlet в декларации собственности. Для единообразия это, вероятно, лучшее место, чтобы его бросить.

3
ответ дан 3 December 2019 в 05:34
поделиться

IBOutlet имеет значение только для InterfaceBuilder. Для компилятора UINibDeclarations.h #define ничего не значит.

InterfaceBuilder принимает IBOutlet как подсказку из файла заголовка для перечисления доступных выходов для класса. Если вы подключаете объект к IBOutlet , независимо от того, определен ли он как свойство или переменная экземпляра, эта информация записывается в перо.

При загрузке пера загрузчик пытается найти наилучший способ установки соединения: сначала он пытается найти метод установки с подходящим именем. Если такой установщик не найден, он возвращается к установке переменной экземпляра напрямую, что является плохим стилем, потому что управление памятью таким образом неясно.

Все предложенные вами примеры имеют свойство (и, конечно же, метод установки) с правильным именем. Таким образом, в каждом случае загрузчик будет использовать метод установки, независимо от того, где стоит тег IBOutlet : нет никакой разницы между вашими примерами, ни в контуре, ни в способе выполнения кода.

Лучшим способом было бы поместить тег IBOutlet в определение свойства.

11
ответ дан 3 December 2019 в 05:34
поделиться

Я тоже нашел такой способ (без объявления свойств):

@class SwitchViewController;

@interface iPhone_switcherAppDelegate : NSObject <UIApplicationDelegate> {
    IBOutlet UIWindow *window;
    IBOutlet SwitchViewController *switchViewController;
}

@end

Что насчет этого?

0
ответ дан 3 December 2019 в 05:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: