从NSOperation的自动释放池中传播NSError

时间:2014-06-11 20:07:05

标签: ios objective-c cocoa-touch nsoperation

我目前拥有什么

我在传播NSErrors NSOperation main方法中创建的@interface FooOperation() @property (nonatomic, strong) NSError * error; @end @implementation FooOperation - (id) initWithError:(NSError * __autoreleasing *) error { self = [super init]; if (self) { _error = * error; } return self; } - (void) main { NSError * innerError = nil; @autoreleasepool { // Call some methods, such as: [self someMethodWithError:&innerError]; if (innerError) { // many of them can throw errors _error = innerError; // _error is set just fine here return; } // call some other methods... } } @end 时遇到了一些麻烦。

NSOperationQueue * opQueue = [[NSOperationQueue alloc] init];
NSError * error = nil;
FooOperation * operation = [[FooOperation alloc] initWithError:&error];
[operation setCompletionBlock:^{
    if (error) {
    // never happens, error is always nil here!
    }
}];


[opQueue addOperation:operation];

我会尝试使用此操作并得到如下错误:

errors

我想做什么

在大多数这些UIAlertView之后,我会制作一个NSOperation来说明问题所在以及可能的恢复解决方案。我从ViewController内部知道我可以打电话给主队列,只是从那里显示警报,但是我想从我的{{1}}调用这样的东西来保持UI代码在一个地方

编辑:我想我想要做的就是在Java或C#中如何从操作中抛出异常,并在视图控制器中捕获它以显示我的错误消息

0 个答案:

没有答案