(Objective-C/Cocoa)Caste Superclass保持不变

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.

现在我想知道如何合并超类实例和我的子类属性的所有属性值.

感谢帮助!

Amy*_*all 5

转换不会更改对象的类.转换只是告诉编译器"这个对象实际上是一个什么".这是因为编译器误解了什么类是什么.

鉴于转换似乎不适合您,那么这意味着您没有被传递自定义子类的实例.因此,您应该首先查看创建连接的代码.我希望看到类似的东西:

mySubClass *conn = [[mySubClass alloc] initWithRequest:req delegate:self];
Run Code Online (Sandbox Code Playgroud)

这是你的代码是什么样的?如果不是(即如果你创建一个NSURLConnection而不是一个mySubClass),切换到创建一个mySubClass.