我想知道是否需要声明协议。
因此,我删除了协议声明代码的部分。
我认为会发生编译错误。
但是,一直没有任何问题。
为什么需要协议声明部分?
#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.
下面是图片编辑完屏幕后。
没有问题。
并且没有任何问题地执行..
答案 0 :(得分:1)
您没有在此声明协议,您只是指定您的类SingleComponentPickerViewController
遵循您指定的协议。
如果您正在使用任何组件并且将SingleComponentPickerViewController
设置为其委托,则需要指定协议。这样编译器就知道您的类遵循该特定协议,并且您已经实现了任何所需的协议方法。
答案 1 :(得分:0)
<UIPickerViewDelegate, UIPickerViewDataSource>
它没有声明协议,它告诉编译器您的类符合列出的协议。
这是必需的,所以其他类可以知道你的类符合他们的协议。如果省略它们,则不会出现编译器错误,但可能无法调用您在类中声明的委托方法。