2

ARC を有効にした iOS SDK 4 プロジェクトに取り組んでいます。

私のクラスMyTextView(プロトコルを使用して UITextView から派生UITextViewDelegate) は、次の静的メソッドを実装します。

+ (void)showInViewController:(UIViewController*)viewController
{
    MyTextView *textEdit = [[MyTextView alloc] init];
    textEdit.delegate = textEdit;
    [viewController.view addSubview:textEdit];

    // Show the keyboard
    [textEdit becomeFirstResponder];
}

私のView Controllerの1つで、次のように呼び出します。

[MyTextView showInViewController:self]

warning: Unable to restore previously selected frame.これはon でクラッシュしbecomeFirstResponderます。何らかのサイクルが原因で、スタック関連のクラッシュが発生したようです。私はARCにかなり慣れていません。のデリゲート プロパティUITextViewは次のように定義されますassign(ARC はそれを ? と解釈すべきではありませweakん)。私は、このアプローチがメモリに関してかなり奇妙であることを知っています。しかし、ARCがそのようなことを処理できるかどうかを知りたかった. 明らかにそれはできません。何が問題なのか、それを解決する方法はありますか?

4

2 に答える 2

1

ARCとメモリ管理とは何の関係もないと思いますが、 aUITextViewがそれ自体のデリゲートになれないというより根本的な問題です。ループでロックされます。ログ メッセージを入力するtextViewDidChangeSelectionと、繰り返し呼び出されることがわかります。メモリの問題ではなく、UITextViewデリゲートのロジックの問題だと思います。問題を解決せずshowInViewControllerに標準のUITextViewサブクラスを作成し、そのデリゲートをそれ自体に設定しようとしても、同じ奇妙な動作が見られます。

于 2012-07-31T04:26:18.147 に答える
0

古い投稿ですが、答えは次のとおりです。

http://www.cocoabuilder.com/archive/cocoa/282093-uitextview-as-its-own-delegate-infinite-loop-on-keyboard-select.html

またはここでも

self.delegate = self; それをすることの何が問題になっていますか?

于 2012-07-31T04:56:44.367 に答える