考虑以下头文件,有2个委托协议声明:NSSpeechSynthesizerDelegate和NSTableViewDelegate。但是在我评论了两位代表后,该程序仍然可以编译并运行完美。我的问题是:添加2委托声明的真正效果是什么?
#import <Cocoa/Cocoa.h>
@interface AppController : NSObject
<NSSpeechSynthesizerDelegate, NSTableViewDelegate>
{
IBOutlet NSTextField *textField;
IBOutlet NSButton *stopButton;
IBOutlet NSButton *startButton;
IBOutlet NSTableView *tableView;
NSArray *voiceList;
NSSpeechSynthesizer *speechSynth;
}
- (IBAction) sayIt : (id) sender;
- (IBAction) stopIt : (id) sender;
- (void) speechSynthesizer : (NSSpeechSynthesizer *) sender
didFinishSpeaking : (BOOL) complete;
- (int) numberOfRowsInTableView : (NSTableView *) tv;
- (id) tableView : (NSTableView *) tv
objectValueForTableColumn : (NSTableColumn *) tableColumn
row : (int) row;
- (void) tableViewSelectionDidChange : (NSNotification *) notification;
- (void) awakeFromNib;
@end
答案 0 :(得分:1)
Afaik只会对开发者产生影响,代码不会改变 如果你喜欢编译器警告,如果你确定你实现了所需的方法,你可以在不声明你支持协议的情况下生存。
NSTableViewDelegate或NSSpeechSynthesizerDelegate中没有必需的方法,因此您不会收到有关缺少函数的警告,因此可能不那么明显。
对我而言,这些是使用协议的主要原因: