Objective c 协议中的方法定义
我在@protocol中使用了一个对象方法,但是protocol只支持方法声明,有人能帮我把它和同一个方法的方法定义联系起来吗(方法定义在哪里写)。一旦声明了协议,任何符合它的类都可以实现该协议中的方法。只需导入声明协议的头文件,将协议添加到该类的接口中,并在中实现方法。m阅读本主题是一个很好的建议,顺便说一句,协议只是一个没有任何实现的方法声明列表。它们可用于将一组可能的(类)限制为那些实现特定协议的类 例如,如果您有一个Objective c 协议中的方法定义,objective-c,ios,Objective C,Ios,我在@protocol中使用了一个对象方法,但是protocol只支持方法声明,有人能帮我把它和同一个方法的方法定义联系起来吗(方法定义在哪里写)。一旦声明了协议,任何符合它的类都可以实现该协议中的方法。只需导入声明协议的头文件,将协议添加到该类的接口中,并在中实现方法。m阅读本主题是一个很好的建议,顺便说一句,协议只是一个没有任何实现的方法声明列表。它们可用于将一组可能的(类)限制为那些实现特定协议的类 例如,如果您有一个GasStation类,您可能希望限制可以在加油站加油的对象的类型(类)
GasStation
类,您可能希望限制可以在加油站加油的对象的类型(类)。当然,您可以简单地要求对象是类Vehicle
的后代,如下所示:
@interface GasStation : NSObject
- (void)refuel:(Vehicle *)vehicle;
@end
@implementation GasStation
- (void)refuel:(Vehicle *)vehicle {
[vehicle addFuel:100];
}
@end
但这不允许一个油罐装满。但是,允许传递任何类型的对象也是一个坏主意,因为如果您传递了Cat
的实例,则在尝试向其发送addFuel:
消息时肯定会出错
因此,您定义了可拒绝类必须实现的协议:
@protocol RefuelableThing
@required
- (void)addFuel:(float)fuel;
@end
现在,您可以使用该协议限制可以为哪些类型的对象加油:
@interface GasStation : NSObject
- (void)refuel:(NSObject<RefuelableThing> *)thing;
@end
@接口气体站:NSObject
-(无效)加油:(NSObject*)东西;
@结束
Vehicle
当然会有一个方法addFuel:
,因此可以JerryCan
实现自己的独立版本,即使它不是Vehicle
我想你在这里混淆了一些事情。您的意思是将方法实现放在何处?您可能需要通读以了解协议的使用方式代码>在@协议
声明上方。