我已经成功地在我的班级中设置了一个委托,NSObject
并且我能够传输一些数据并运行一些选择器。
问题是,我不明白如何将一些值发送回我设置委托的那个类。我有一个 ViewController,SGDownloader
它有一个BOOL
属性,我想在委托类上检查它以有条件地触发某些选择器。问题是,我似乎无法让它工作。我正在使用故事板,这是我的代码:
-(void)checkTheQueue {
SGDownloader *downloaderInstance = [SGDownloader new];
NSLog((@"Downloader is now %i"), downloaderInstance.isBusy);
BOOL checkBool = downloaderInstance.isBusy;
if (checkBool == NO) {
SEL selector = @selector(checkTheThing);
if (delegate && [delegate respondsToSelector:selector]) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[delegate performSelector:selector];
#pragma clang diagnostic pop
}
}
else {
NSLog(@"Sorry, I'm busy");
}
}
checkTheThing
我在我的第一堂课中触发了选择器,我想从中获取isBusy
价值。它也是一个@optional
委托方法。问题是,该BOOL
值始终为 0,如果我尝试传递一个字符串,它始终为nil
.
我怀疑这条线有问题-SGDownloader *downloaderInstance = [SGDownloader new];
也许故事板弄混了或类似的东西。
编辑:
部分代码来自SGDownloader
:
- (IBAction)attemptNewDownload:(id)sender {
SGQueueController *myProtocol = [SGQueueController new];
myProtocol.delegate = self;
NSLog((@"Busy value equals %i while checking the protocol"), isBusy);
[myProtocol checkTheQueue];
}
这里NSLog
告诉我该值为 1。几秒钟后它在我的协议类上为 0。虽然后来什么也没做。