iphonesdk中的协议

iphonesdk中的协议,iphone,protocols,Iphone,Protocols,我对iphone中的@protocol--@end感到困惑,它到底是什么意思。为什么我们要用这个。为类提供附加方法是一种功能吗。。?我不确定 请帮帮我 谢谢 Shibin协议相当于Java中的接口 @protocol Printable // Printable interface - (void) print; @end @interface MyClass: NSObject <Printable> { ... } // MyClass extends NSObject imp

我对iphone中的@protocol--@end感到困惑,它到底是什么意思。为什么我们要用这个。为类提供附加方法是一种功能吗。。?我不确定

请帮帮我

谢谢


Shibin协议相当于Java中的接口

@protocol Printable // Printable interface
- (void) print;
@end

@interface MyClass: NSObject <Printable> { ... }
// MyClass extends NSObject implements Printable

@协议相当于Java中的接口

@protocol Printable // Printable interface
- (void) print;
@end

@interface MyClass: NSObject <Printable> { ... }
// MyClass extends NSObject implements Printable

@协议可用于定义委托

例如:

@protocol SomeDelegate
- (void)delegateActionCompleted;
@end

@interface MyClass: NSObject {
   id<SomeDelegate> _delegate;
}
@end 

@协议可用于定义委托

例如:

@protocol SomeDelegate
- (void)delegateActionCompleted;
@end

@interface MyClass: NSObject {
   id<SomeDelegate> _delegate;
}
@end 

协议用于声明将由许多对象或类使用的功能

举个例子,您正在开发一个鸟类数据库。因此,您将使用bird作为基类,并将继承bird来创建您自己的bird。所以在bird类中,您将不会有任何定义,而是所有鸟类都必须继承的一些行为。就像鸟儿会飞一样,有着那样的翅膀。因此,您需要声明所有这些行为并在派生类中实现它们。因为可能有一些鸟飞得很高很长,有些会飞很短的距离

为此目的,使用@协议。使用@protocol可以声明一些行为。并在其他类中使用这些行为来实现该行为


这将避免反复声明同一方法的开销,并确保在类中实现该行为。

协议用于声明将由许多对象或类使用的功能

举个例子,您正在开发一个鸟类数据库。因此,您将使用bird作为基类,并将继承bird来创建您自己的bird。所以在bird类中,您将不会有任何定义,而是所有鸟类都必须继承的一些行为。就像鸟儿会飞一样,有着那样的翅膀。因此,您需要声明所有这些行为并在派生类中实现它们。因为可能有一些鸟飞得很高很长,有些会飞很短的距离

为此目的,使用@协议。使用@protocol可以声明一些行为。并在其他类中使用这些行为来实现该行为


这将避免反复声明相同方法的开销,并确保在类中实现该行为。

最好使用

if (self.delegate && [self.delegate conformsToProtocol:@protocol(YourProtocolName)]) {
   ...
}

检查代理是否真正符合指定的协议。

最好使用

if (self.delegate && [self.delegate conformsToProtocol:@protocol(YourProtocolName)]) {
   ...
}
检查学员是否符合指定的协议。

另请参见此问题:另请参见此问题: