关于代表议定书声明效果的问题

时间:2011-02-22 13:37:05

标签: cocoa xcode

考虑以下头文件,有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

1 个答案:

答案 0 :(得分:1)

Afaik只会对开发者产生影响,代码不会改变 如果你喜欢编译器警告,如果你确定你实现了所需的方法,你可以在不声明你支持协议的情况下生存。

NSTableViewDelegate或NSSpeechSynthesizerDelegate中没有必需的方法,因此您不会收到有关缺少函数的警告,因此可能不那么明显。


对我而言,这些是使用协议的主要原因:

  1. 如果您忘记实现协议所需的方法,则会收到编译器警告。
  2. 代码意义只会在协议中找到方法名称
  3. 这是法律。