Jul*_*ert 0 cocoa delegates casting subclass objective-c
我正在研究NSURLConnection的子类.我添加了一些属性和功能.我实现了NSURLConnectionDelegate及其方法.
现在我需要将NSURLConnection(及其属性)传递给我的子类委托.我为此实现了一个委托协议.
这是一个代码示例:
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
if([_delegate respondsToSelector:_didReceiveDataSelector]) {
[_delegate performSelector:_didReceiveDataSelector withObject:connection];
}
Run Code Online (Sandbox Code Playgroud)
现在我还需要返回我的子类属性.我试图简单地转换实例:
mySubClass *obj = (mySubClass *)connection;
obj.userInfo = self.userInfo;
Run Code Online (Sandbox Code Playgroud)
但事实证明NSLog(@"%@", NSStringFromClass([obj class]));,演员会返回一个对象,该对象的类仍然是NSURLConnection.
现在我想知道如何合并超类实例和我的子类属性的所有属性值.
感谢帮助!
转换不会更改对象的类.转换只是告诉编译器"这个对象实际上是一个什么".这是因为编译器误解了什么类是什么.
鉴于转换似乎不适合您,那么这意味着您没有被传递自定义子类的实例.因此,您应该首先查看创建连接的代码.我希望看到类似的东西:
mySubClass *conn = [[mySubClass alloc] initWithRequest:req delegate:self];
Run Code Online (Sandbox Code Playgroud)
这是你的代码是什么样的?如果不是(即如果你创建一个NSURLConnection而不是一个mySubClass),切换到创建一个mySubClass.