我读了一些代码,创建了@protocol
并定义了@property
的协议。
例如
protocol1.h
@protocol protocol2;
@protocol protocol1
-(void)p1_method1;
-(void)p1_method2;
@property (readonly, nonatomic) id<protocol2>p2;
@end
protocol2.h
@protocol protocol2
-(void)p2_method1;
-(void)p2_method2;
@end
我不知道这个协议有@property
协议的意思。有一个简单的例子吗?谢谢
您必须在将要使用的接口之上添加协议。
@protocol MyViewControllerDelegate;
@interface MyViewController : UIViewController
@property (weak, nonatomic) id <MyViewControllerDelegate> delegate;
@property (copy, nonatomic) NSArray *viewControllers;
@end
@protocol MyViewControllerDelegate <NSObject>
@optional
//sth
@end
您所需要做的就是在符合protocol1
的类中使用@synthesize p2
。协议中的属性不会自动合成。
@interface Class1 : NSObject <protocol1>
@end
@implementation Class1
@synthesize p2; // Synthesize p2, the property from protocol1
- (void)p1_method1 {
// Do something
}
- (void)p1_method2 {
// Do something else
}
这将为该属性创建正确的getter/setter(在您的示例中,该属性是只读的,因此仅为getter)。@synthesize
还将创建ivar,在本例中为p2
。