我读了一些代码,我创建了@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
协议的意思。
有一个简单的例子吗?感谢。
答案 0 :(得分:0)
您必须在将要使用的界面上添加协议。
@protocol MyViewControllerDelegate;
@interface MyViewController : UIViewController
@property (weak, nonatomic) id <MyViewControllerDelegate> delegate;
@property (copy, nonatomic) NSArray *viewControllers;
@end
@protocol MyViewControllerDelegate <NSObject>
@optional
//sth
@end
答案 1 :(得分:0)
您需要做的只是@synthesize p2
符合protocol1
的类。协议中的属性不会自动合成。
@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(在您的示例中,属性是readonly,因此只有getter)。 @synthesize
也会创建ivar,在本例中为p2
。