これは変です。私はマルチスレッドのアプリケーションを持って、スレッドはメインビューのいくつかのメソッドを呼び出します。私は、デバッガをステップスルー、行が実行されますが、何も起こりません。スレッドは行を実行していますが、無意味です
私はAViewControllerを持っており、callbackTarget(AViewController self)とUpdateScreen SelectorパラメータでWrapperクラスWを呼び出します。クラスWはUIImagePickerControllerを開き、画像を取得して、Image Processing(IP)クラスに渡し、callbackTargetとSelectorを渡します。 IPクラスは、スレッドを生成してイメージを処理します。これが完了すると、threadはcallbackTarget.Selectorを呼び出します。これは、AViewControllerの結果でビューを更新することです。
私はUpdateScreenにブレークポイントがあります。すべての行が実行されますが、画面上で何も起こりません。私はいくつかの変数がスレッド間で見えないと思っていますが、それを動作させる方法はわかりません。助けてください?
サンプルコードを追加してください。それは私が
コードスニペット
// AViewController, this is entry point
-(IBAction) callCardScanner_tapped{
[testResultLabel setText:@"ocr started"]; // this is shown
CardScaner* scanner = [[CardScaner alloc] init] ;
[scanner scanWithCameraSendResultTo:self selector:@selector(updateScreenWithResultFromCardScanner:)];
[scanner release];
}
//this method is used to pass into the thread so it can call back
-(void) updateScreenWithResultFromCardScanner:(OCRResult *)result{
// ... update labels with result
// ...
[resultLabel setText: result.resultString]; // these lines seem to be executed by main thread according to debugger, but the screen remain blank
}
CardScannerラッパークラス
-(void) scanWithCameraSendResultTo:(NSObject*) target selector :(SEL) selector{
// ...
UIViewController *rootViewController = [[[UIApplication sharedApplication] keyWindow] rootViewController];
[rootViewController presentModalViewController:imagePicker animated:true];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
// ...
ImageProcessor* recognizer = [[ImageProcessoralloc] init];
[recognizer ocrImageInThread:img callbackTarget:callbackTarget selector:self.callbackMethod];
[imagePicker release];
}
イメージプロセッサクラス
で開始することが含まれていなかった理由です厄介です
あなたのコードを投稿した方が役に立ちます。 – ChrisF
サンプルコードを追加しましたが、意味があるかどうか確認してください。 – Haoest