我和你一样是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
你的意思是说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;