Objective c 在块内调用委托方法。委托更改
我有以下代码:Objective c 在块内调用委托方法。委托更改,objective-c,objective-c-blocks,Objective C,Objective C Blocks,我有以下代码: __block id <BitlyConnectionDelegate> blockDelegate = [self delegate]; __block BitlyConnection *blockSelf = self; [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *res
__block id <BitlyConnectionDelegate> blockDelegate = [self delegate];
__block BitlyConnection *blockSelf = self;
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
//do some stuff
[blockDelegate someMethod:blockSelf withParameters:parameters]; //calling a delegate method
}];
所以我记录了委托的类,在块之前,委托类是正确的,但它会改变,有时块委托是u NSArrayI或u nsmutablerearray
这会导致错误:
[\uu NSArrayI someMethod:withParameters]已将无法识别的选择器发送到实例
blockDelegate变量正在更改,但我不知道它是如何更改的以及更改的原因。
任何提示/建议都会很棒。解释它为什么会发生变化是非常受欢迎的
注意:这两个类都是我自己的,都是我自己写的
Jack没有多大意义,但是并非所有委托方法都必须存在,因此应该使用respondsToSelector。还有,为什么这些变量使用_块限定符?我肯定你的意思是_秒弱?_块用于访问块内的这些变量。不,不是,它用于声明您将写入这些变量,而您没有这样做。删除_块声明并重新测试。哇,很好,这就成功了:非常感谢!但是,当我使用self和self.delegateNo时,这个变量崩溃了,这是另外一回事。发布另一个问题并包括堆栈跟踪。