将委托传递给MyClass时,
- (MyClass *)initWithDelegate:(id <MyDelegate>)delegate {..}
以某种方式可以告诉我的代表是什么类的课程?被定义为id,委托似乎不响应任何方法调用,如class,description,respondsToSelector等。
我希望能够跟踪谁在调用MyClass!
提前致谢!
/基督教
答案 0 :(得分:5)
您可以致电[delegate class];
获取delegate
的课程。
如果delegate
没有回应,那就意味着它是nil
。
修改强>
现在您提到您遇到编译器错误,那么您的委托不符合协议NSObject
。因此编译器不会将其识别为NSObject
。您应该将协议声明MyDelegate
修改为以下内容:
@protocol MyDelegate <NSObject>
// ...
@end
答案 1 :(得分:0)
如果您无法修改协议本身,您只需编写:
- (MyClass*) initWithDelegate:(id<NSObject, MyDelegate>)delegate {..}
然后&#39;班级&#39;物业将可用。您可以替换NSObject(或添加其他协议)以支持(因此需要参数)其他类型。例如:
- (MyClass*) initWithDelegate:(id<NSObject, NSCoding, MyDelegate>)delegate {..}