我和你一样是JAVA转过来的,
id<xxxDelegate> 类似于在JAVA中表示这是一个实现xxxDelegate接口的对象,所以你应该明白了,在OC里协议不同于JAVA里的接口它没有类实现。
-(void) xxx:(NSDictionary *)paramDic resultDelegate:(id<xxxDelegate>)resultDelegate;
这样的做法多少有点过时了,建议你用GCD
id<xxxDelegate> 类似于在JAVA中表示这是一个实现xxxDelegate接口的对象,所以你应该明白了,在OC里协议不同于JAVA里的接口它没有类实现。
-(void) xxx:(NSDictionary *)paramDic resultDelegate:(id<xxxDelegate>)resultDelegate;
这样的做法多少有点过时了,建议你用GCD
解决方案 »
- ios开发,怎么设计画面让程序可以在iphone和ipad上兼容
- 制作以iphone为客户端的sns游戏
- SpringBoard如何在程序中调用
- 如何在一个UIView中显示一个UITableView
- 菜鸟问题:didFinishLaunchingWithOptions中手动添加按钮不显示
- IOS 隐藏状态栏之后如何调整界面
- ios消息推送-APNS
- 求助,为什么我本地的xcode工程拷贝到别的mac机上运行总是报错链接缺少文件呢?xcode版本是一样的呀
- 求助,大牛! AVPlayer 无法释放内存的问题!!!
- 有一个Idea
- 【求助】怎么解析soap返回的XML数据得到有效数据??
- 一个简单的socket+UItableView实现的聊天程序,引起的iOS内存管理的困扰!!!!
你的意思是说oc中没法像java那样写成resultDelegate:(xxxDelegate) 这样?这样写会编译错误,只能写成
resultDelegate:(id<xxxDelegate>) 这样是么
没有类实现什么意思,如果我有个类实现了那个协议算不算类实现呢?还是我理解错了?
-(void) xxx:(NSDictionary *)paramDic resultDelegate:(myObj)resultDelegate;
也就是说专门写了一个类来做回调的反应,说实话至少我很少会这样写。。还是建议你用GCD吧,这个才真的在使用上像JAVA的接口
-(void) xxx:(NSDictionary *)paramDic resultDelegate:(myObj *)resultDelegate;
你定义的协议,可能有不同的类去实现。而这些类的类型不能被确定,不能在编译时告知编译器实现协议的类的类型。故而使用id类型这种可以代表任意类型的类型来定义。还有就是:协议不能作为类型来出现,所以也就不会出现这样的定义
-(void) xxx:(NSDictionary *)paramDic resultDelegate:(xxxDelegate)resultDelegate;