#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; \ 请问 id <EveryFrameDelegate> 这是什么语法?为什么这里要加尖括号? |
|
10分 |
你看上面写了是protocol
id <EveryFrameDelegate>这个就表明遵循了这个协议 这是oc语法规定 |
10分 |
oc的语法
协议只能去实现,不能作为一个具体类型。所以不能使用 @property (nonatomic, assign) EveryFrameDelegate delegate; @property (nonatomic, assign) id<EveryFrameDelegate> delegate; @interface viewController:UIViewController <EveryFrameDelegate> @end 还有一点注意的地方就是将协议声明为属性时的修饰。不应使用retain ,而是assign. 表示它们之间是一个弱引用的关系。避免直接在类中包含另一个类的指针引用(强引用),增加藕合度。 |