假設我正在做一些iPhone開發,我有一個UIViewController
的子類。並且假設這個視圖控制器有一個NSOperationQueue
,它在viewDidLoad
中創建並在dealloc
中發佈。NSInvocationOperation從視圖控制器和視圖控制器開始處置?
現在假設在這個視圖控制器處於活動狀態時的某個時刻,它會向NSOperationQueue
添加一個NSInvocationOperation
,並且操作隊列開始在後臺執行它。在執行時,視圖控制器被解除。
運行NSInvocationOperation
會發生什麼情況?它能繼續運行並阻止視圖控制器被釋放嗎?
實施例的代碼在視圖控制器:
NSInvocationOperation *operationDoSomething = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(synchronousDoSomething:) object:nil];
[_operationQueue addOperation:operationDoSomething];
[operationDoSomething release];
,然後這是在我的視圖控制器的另一功能:
- (void)synchronousDoSoemthing
{
[NSThread sleepForTimeInterval:1000.0];
[self finished];
}
在上述例子中
所以,由時間[self finished]
被調用時,視圖控制器已經從導航控制器中彈出。
謝謝。在等待迴應時,我將自己的邏輯轉移到模型中(無論如何它應該在那裏)並解決問題。但我也想在這裏得到答案。 – marcc