给定(id <mydelegate>)委托,你能告诉我们什么类的委托吗?</mydelegate>

时间:2012-02-23 16:49:52

标签: objective-c

将委托传递给MyClass时,

- (MyClass *)initWithDelegate:(id <MyDelegate>)delegate {..}

以某种方式可以告诉我的代表是什么类的课程?被定义为id,委托似乎不响应任何方法调用,如class,description,respondsToSelector等。

我希望能够跟踪谁在调用MyClass!

提前致谢!

/基督教

2 个答案:

答案 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 {..}