当传递一个委托MYCLASS这样,鉴于(编号<MyDelegate>)委托,你能告诉什么样的类委托?
- (MyClass *)initWithDelegate:(id <MyDelegate>)delegate {..}
是它在某种程度上可以告诉我的代表是什么样的课吗?被定义为id,委托似乎没有响应像类,描述,respondsToSelector等任何方法调用。
我希望能够跟踪谁调用MyClass!
在此先感谢!
/基督教
当传递一个委托MYCLASS这样,鉴于(编号<MyDelegate>)委托,你能告诉什么样的类委托?
- (MyClass *)initWithDelegate:(id <MyDelegate>)delegate {..}
是它在某种程度上可以告诉我的代表是什么样的课吗?被定义为id,委托似乎没有响应像类,描述,respondsToSelector等任何方法调用。
我希望能够跟踪谁调用MyClass!
在此先感谢!
/基督教
您可以拨打[delegate class];
拿到班上delegate
的。
如果delegate
不响应,那就意味着它是nil
。
编辑
既然你提到你得到编译器错误,那么你的委托不符合协议NSObject
。所以编译器不会将其识别为NSObject
。你应该修改协议MyDelegate
的声明如下:
@protocol MyDelegate <NSObject>
// ...
@end
在这种情况下,当你不能修改协议本身,你可以简单地写:
- (MyClass*) initWithDelegate:(id<NSObject, MyDelegate>)delegate {..}
那么“类”财产将可用。您可以替换NSObject(或添加其他协议)以支持其他类型(因此需要参数)。例如:
- (MyClass*) initWithDelegate:(id<NSObject, NSCoding, MyDelegate>)delegate {..}
正如@sch指出的那样,您可能希望将debug语句检查以查看委托是否为'nil'。 'NSLog(@“为零:%i”,委托== nil);' – 2012-02-23 17:04:02