需要在目标c中声明协议吗?

时间:2011-09-06 09:59:54

标签: objective-c

我想知道是否需要声明协议。

因此,我删除了协议声明代码的部分。

我认为会发生编译错误。

但是,一直没有任何问题。

为什么需要协议声明部分?

#import <UIKit/UIKit.h>


@interface SingleComponentPickerViewController : UIViewController {
// <UIPickerViewDelegate, UIPickerViewDataSource> {   ==> protocol declare part
    IBOutlet    UIPickerView *singlePicker;
                NSArray *pickerData;
}
@property (nonatomic, retain) UIPickerView *singlePicker;
@property (nonatomic, retain) NSArray *pickerData;
- (IBAction)buttonPressed:(id)sender;
@end


<UIPickerViewDelegate, UIPickerViewDataSource> <= this is what feature?
                                                  When omit this, excute without any problem. 

下面是图片编辑完屏幕后。

没有问题。

并且没有任何问题地执行..

enter image description here

2 个答案:

答案 0 :(得分:1)

您没有在此声明协议,您只是指定您的类SingleComponentPickerViewController遵循您指定的协议。

如果您正在使用任何组件并且将SingleComponentPickerViewController设置为其委托,则需要指定协议。这样编译器就知道您的类遵循该特定协议,并且您已经实现了任何所需的协议方法。

答案 1 :(得分:0)

<UIPickerViewDelegate, UIPickerViewDataSource>

它没有声明协议,它告诉编译器您的类符合列出的协议。

这是必需的,所以其他类可以知道你的类符合他们的协议。如果省略它们,则不会出现编译器错误,但可能无法调用您在类中声明的委托方法。