请问 id 这是什么语法?为什么这里要加尖括号?

endfun 2015-02-15 05:16:29
#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> 这是什么语法?为什么这里要加尖括号?
我觉得 EveryFrameDelegate delegate;就可以了啊,为什么EveryFrameDelegate delegate不行
...全文
279 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ReyZhang 2015-02-16
  • 打赏
  • 举报
回复
oc的语法 协议只能去实现,不能作为一个具体类型。所以不能使用
@property (nonatomic, assign) EveryFrameDelegate delegate;
来声明。而需要使用
@property (nonatomic, assign) id<EveryFrameDelegate> delegate;
表明,这个delegate是一个需要实现EveryFrameDelegate协议的对象。我们在一个类中如果要实现某个协议会像如下这样:
@interface viewController:UIViewController <EveryFrameDelegate>
@end
还有一点注意的地方就是将协议声明为属性时的修饰。不应使用retain ,而是assign. 表示它们之间是一个弱引用的关系。避免直接在类中包含另一个类的指针引用(强引用),增加藕合度。
ioscoco 2015-02-15
  • 打赏
  • 举报
回复
你看上面写了是protocol id <EveryFrameDelegate>这个就表明遵循了这个协议 这是oc语法规定
前端HTML标签的属性和使用1.什么是表格&表格的作用 什么是表格:由一些 被称之为 单元格的矩形框 按照从左到右从上到下的顺序排列到一起组成的 表格的作用:以一定的结构来显示信息的。  2.如何使用表格 定义表格: 创建表行: 创建列(单元格):  注意:默认情况下,每行中的列数是统一的。 table : display:table; 特点: 1、独占一行 2、宽度自适应(

29,049

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧