Я новичок в объективе-c. Когда я читаю какой-то исходный код, написанный другими, я столкнулся с проблемой.cocoa-Почему существует IBOutlet и одноименное свойство?
я обнаружил, что есть
IBOutlet NSPopover *popover;
, а также
@property NSPopover *popover;
PopoverViewController.h
#import <Foundation/Foundation.h>
#import <Cocoa/Cocoa.h>
#import "TimerPopoverViewController.h"
@class TimerLogic;
@class TimerInfo;
@interface TimerPopoverDelegate : NSObject <NSPopoverDelegate> {
@private
IBOutlet NSPopover *popover;
IBOutlet NSWindow *detachWindow;
IBOutlet TimerPopoverViewController *viewController;
}
@property NSPopover *popover;
- (void)showPopover:(id)sender timerInfo:(TimerInfo *)timerInfo;
@end
Я думаю, что они являются различными переменными. Однако я не могу понять, что они делают?
Насколько я знаю, IBOutlet
должен показать popover. Но что делает @property
?
Я заметил, что 'IBOutlet' помещен в' @ private'. Это имеет значение? Поскольку я совершенно новичок в ObjC, я не могу понять, что означает «объявление свойства, которое поддерживается переменной экземпляра» в вашем ответе. Не могли бы вы дать какой-то намек? Благодаря! :) –
Как новый разработчик ObjC, я бы не стал беспокоиться об этом. Объявление переменных экземпляра таким образом больше не является необходимым или подходящим. См. Https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/EncapsulatingData/EncapsulatingData.html для текущей практики и того, как работают свойства и ivars. –