29,049
社区成员




#import <UIKit/UIKit.h>
@protocol EveryFrameDelegate <NSObject>
- (void)DoSomethingEveryFrame;
@end
@interface GifView : UIView
{
NSTimer *timer;
id <EveryFrameDelegate> delegate;
NSInteger currentIndex;
}
@property (nonatomic, retain) id <EveryFrameDelegate> delegate;
\@property (nonatomic, assign) EveryFrameDelegate delegate;
来声明。而需要使用
@property (nonatomic, assign) id<EveryFrameDelegate> delegate;
表明,这个delegate是一个需要实现EveryFrameDelegate协议的对象。我们在一个类中如果要实现某个协议会像如下这样:
@interface viewController:UIViewController <EveryFrameDelegate>
@end
还有一点注意的地方就是将协议声明为属性时的修饰。不应使用retain ,而是assign. 表示它们之间是一个弱引用的关系。避免直接在类中包含另一个类的指针引用(强引用),增加藕合度。