4

[戻る] ボタンを使用して、ナビゲーション ビュー内にモーダル テーブル ビューを表示します。戻るボタンは、モーダル ビューのデリゲートにメッセージを送信して、モーダル ビューを閉じます。テーブル ビューをスクロールし、テーブル ビューがまだスクロールしているときにナビゲーション バーの [戻る] ボタンをタップすると、アプリがクラッシュし、次のメッセージが表示されます。

*** -[UILayoutContainerView setUseFastMode:]: message sent to deallocated instance 0xef74650

PO 0xef74650 すると、次のようになります。

(int) $1 = 251086416 [no Objective-C description available]

誰もこれを前に経験していますか?回避策または修正方法は何ですか?

4

6 に答える 6

8

これは、現在スクロール中のモーダルの非表示をアニメーション化するときに発生する iOS 5.1 のバグだと思います。アプリがクラッシュしているというレポートをユーザーから受け取っていました。調査したところ、同じエラーが発生していました。

最小限のコード/ビューで新しいプロジェクトを作成し、このクラッシュを再現できました。これまでに見つけた唯一の回避策は、モーダルを閉じるときにアニメーションを無効にすることです。Apple にバグレポートを提出しました。

于 2012-04-24T23:10:11.720 に答える
3

同様の問題がありました.テーブルがまだスクロールしているとアプリがクラッシュし、テーブルの上にモーダルビューが表示されるようになりました. インスタンスでクラッシュが発生しcellForRowAtIndexPath、indexPath の割り当てが解除されました。

メソッドでスクロールを停止して修正しましたviewWillDisappear:-

- (void) viewWillDisappear:(BOOL)animated {
    [self.tableView setContentOffset:self.tableView.contentOffset animated:NO];
}

うまくいけば、これは誰かが関連する問題を研究するのに役立つかもしれません!

于 2013-01-22T14:26:57.090 に答える
1

iOS 5 には、UIView の FastModeAdditions カテゴリにバグがあります。このバグは、スクロール ビューのサブビューがあり、モーダル ビュー コントローラーが閉じられているのと同じ実行ループでスクロールされている場合に発生します。

    Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0xa0000008
Crashed Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libobjc.A.dylib                 0x34bdef78 objc_msgSend + 16
1   UIKit                           0x35309f9e -[UIView(FastModeAdditions) _setContainerLayoutViewForFastMode:] + 98
2   UIKit                           0x351701cc -[UIView dealloc] + 568
3   UIKit                           0x3545a39e -[UIDropShadowView dealloc] + 86
4   libobjc.A.dylib                 0x34be016e _objc_rootRelease + 30
5   CoreFoundation                  0x32b882e0 CFRelease + 88

私たちが見つけた最善の回避策は、performSelector:afterDelay: 解任です。これにより、後の実行ループで強制的に破棄され、クラッシュは発生しなくなります。

これは iOS 6 では発生しません。

于 2012-09-14T06:57:04.797 に答える
0

モーダル内のボタンをタップしたときにモーダルを閉じていましたが、テーブルがまだスクロールしているとこのクラッシュが発生しました。これは正しくありませんでした。却下コードを現在のViewControllerに移動し、デリゲートメソッドの一部として呼び出した後、クラッシュは発生しなくなりました。

于 2012-10-22T15:26:42.227 に答える
0

チェックインsetUseFastMode:して、後でアクセスしようとしているものをリリースしていないことを確認してください。

[someObject release];
于 2012-04-13T23:43:59.230 に答える
0

これは私のために働いた:

NSIndexPath *myIP = [NSIndexPath indexPathForRow:0 inSection:0]
[self.tblChildProducts scrollToRowAtIndexPath:myIP atScrollPosition:UITableViewScrollPositionTop animated:NO]
[self dismissModalViewControllerAnimated:YES]

@スリー

于 2016-08-24T01:54:07.143 に答える