嗨,我对一个协议有疑问
#import <Foundation/Foundation.h>
@protocol StandardQuality <NSObject>
- (NSString *)color;
- (NSString *)fabric;
-( NSString *)store;
- ( NSString *)price;
@end
我在一个类中实现了这个协议
@interface Hat : NSObject <StandardQuality>
@property NSString *color;
@property NSString *fabric;
@property NSString *store;
@end
这是我所期望的。我收到一条警告信息
协议中的方法“价格”未实现。
不管怎样。我在 main.h 中测试过
[myHat setShop:@"Unirea"];
NSLog(@" The hat is selling at %@", myHat.store);
if([myHat conformsToProtocol:@protocol(StandardQuality)]== YES)
{
NSLog(@"My hat respects the protocol");
}
else {
NSLog(@"My hat doesn't respect the protocol");
}
if([myHat respondsToSelector:@selector(price)]== YES)
{
NSLog(@"My hat has price");
}
else {
NSLog(@"My hat doesn't have price");
}
奇怪的是,我收到了
我的帽子尊重协议
我的帽子没有价格
我的第二个问题是:如果不遵守协议,这是一种阻止编译器编译程序的方法,而不仅仅是接收警告消息?