我正在阅读协议(并认为我可以使用它们重写一些代码),但我似乎陷入了到底是什么使它与类不同?
例如,如果我有一个 ColorController 类:
#import <Foundation/Foundation.h>
@interface ColorController : NSObject {
UIColor* colorToReturn;
}
- (UIColor* ) setColor : (float) red : (float) green : (float) blue;
@end
还有他们
#import "ColorController.h"
@implementation ColorController
- (UIColor* ) setColor : (float) red : (float) green : (float) blue {
float newRed = red/255;
float newGreen = green/255;
float newBlue = blue/255;
colorToReturn = [UIColor colorWithRed:newRed green:newGreen blue:newBlue alpha:1.0];
return colorToReturn;
}
@end
然后将其导入另一个类:
ColorController* colorManager = [ColorController new];
UIColor* newColor = [colorManager setColor:66.0:66.0:66.0];
这似乎很适合转换为协议,因为许多其他类可以使用 setColor 方法。但是我不确定我对协议的理解是否有问题,我认为一旦声明了协议,其他类就可以使用它,但是由于您仍然必须将它包含在 .h 文件中,对我来说唯一可辨别的区别是使用协议 setColor 方法可以在我已将协议导入到的任何类中直接调用,而导入类我将不得不回调类和方法 [colorManager setColor:66.0:66.0:66.0]; 这里的收益究竟是什么?
现在我的观点可能是因为我是一个新手/没有协议经验,并且对它们及其用法的看法有限,所以如果有人能给我一个简短的(除了“去阅读文档”:D)回复的好处协议,也许还有一个使用示例,我真的很感激。