Ich bin neu in Objective-c. Wenn ich etwas Quellcode von anderen gelesen habe, habe ich ein Problem festgestellt.Kakao - Warum gibt es ein IBOutlet und eine Eigenschaft, die den gleichen Namen haben?
fand ich, dass es
IBOutlet NSPopover *popover;
sowie
@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
Ich denke, sie sind verschiedene Variablen ist. Ich kann jedoch nicht herausfinden, was sie tun?
Soweit es mich betrifft, die IBOutlet
ist ein Popover zu zeigen. Aber was macht die @property
?
Ich bemerkte, dass das 'IBOutlet' in' @ private' gesetzt wurde. Spielt das eine Rolle? Da ich bei ObjC ziemlich neu bin, kann ich kaum herausfinden, was "Deklarieren einer Eigenschaft, die von der Instanzvariable unterstützt wird" in Ihrer Antwort bedeutet. Könnten Sie bitte einen Hinweis geben? Vielen Dank! :) –
Als ein neuer ObjC Entwickler würde ich mir keine Sorgen machen. Das Deklarieren von Instanzvariablen auf diese Weise ist nicht länger notwendig oder angemessen. Siehe https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/EncapsulatingData/EncapsulatingData.html für die aktuelle Praxis und die Zusammenarbeit von Eigenschaften und Ivars. –