Я видел, что код ниже записанных 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
Не имеет значения. С помощью 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
Текущий стиль в примере кода Apple ставит IBOutlet в декларации собственности. Для единообразия это, вероятно, лучшее место, чтобы его бросить.
IBOutlet
имеет значение только для InterfaceBuilder. Для компилятора UINibDeclarations.h #define
ничего не значит.
InterfaceBuilder принимает IBOutlet
как подсказку из файла заголовка для перечисления доступных выходов для класса. Если вы подключаете объект к IBOutlet
, независимо от того, определен ли он как свойство или переменная экземпляра, эта информация записывается в перо.
При загрузке пера загрузчик пытается найти наилучший способ установки соединения: сначала он пытается найти метод установки с подходящим именем. Если такой установщик не найден, он возвращается к установке переменной экземпляра напрямую, что является плохим стилем, потому что управление памятью таким образом неясно.
Все предложенные вами примеры имеют свойство (и, конечно же, метод установки) с правильным именем. Таким образом, в каждом случае загрузчик будет использовать метод установки, независимо от того, где стоит тег IBOutlet
: нет никакой разницы между вашими примерами, ни в контуре, ни в способе выполнения кода.
Лучшим способом было бы поместить тег IBOutlet
в определение свойства.
Я тоже нашел такой способ (без объявления свойств):
@class SwitchViewController;
@interface iPhone_switcherAppDelegate : NSObject <UIApplicationDelegate> {
IBOutlet UIWindow *window;
IBOutlet SwitchViewController *switchViewController;
}
@end
Что насчет этого?