我可以将协议作为 Objective-C 中的类变量吗?
我是 Objective C 的新手。我正在尝试像使用 Java 中的接口一样使用协议,但我不知道如何使用它,甚至不知道它是否是适合这项工作的工具。我已经在 Protocol.h 中定义了一个协议:
@protocol SomeProtocol
- (void)someMethod;
@end
现在,在另一个类中,我需要一个具有 someMethod 的变量,
#import "Protocol.h"
@interface OtherClass:NSObject {
SomeProtocol objWithSomeMethod;
}
@end
当然“SomeProtocol objWithSomeMethod”给了我一个错误。那么有没有一种方法可以声明一个对象,无论类型如何,都符合这个协议呢?
I'm new to Objective C. I'm trying to use a protocol as I would an interface in Java, but I don't know how or even if it's the right tool for the job. I have defined a protocol in Protocol.h:
@protocol SomeProtocol
- (void)someMethod;
@end
Now, in another class, I need a variable that has someMethod
#import "Protocol.h"
@interface OtherClass:NSObject {
SomeProtocol objWithSomeMethod;
}
@end
Of course "SomeProtocol objWithSomeMethod" gives me an error. So is there a way to declare an object that, regardless of type, conforms to this protocol?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是的,使用尖括号。您可以声明一个实例变量以符合这样的协议:
如果您希望它符合多个协议,您可以使用逗号将它们分开,如下所示:
您还可以以相同的方式声明变量或参数。
Yes, use the angle brackets. You can declare an instance variable to conform to a protocol like this:
If you want it to conform to more than one protocol, you use commas to separate them like this:
You can also declare variables or parameters the same way.
尖括号将对象限定为实现协议。在您的示例中,写
如果您想声明一个类实现一个接口,您可以使用相同的符号,本质上是:
Angle brackets qualify objects as implementing protocols. In your example, write
If you want to declare that a class implements an interface, you use the same notation, essentially:
您应该用他的类型声明您的实例变量,然后在 <> 中声明协议列表。最后是变量名称。所以在你的情况下,它将是:
You should declare your instance variable with his type, then the list of protocols inside <> and finally the variable name. So in your case, it would be: