2011-03-11 20 views
1

私は単純にUITextViewで構成されるアプリを持っています。アプリケーションがロードされると、キーボードが表示され、AccessoryViewがキーボードの上にロードされ、キーボードが閉じられます。inputAccessoryViewを読み込む際の問題

これは、アプリが読み込まれたときにキーボードをロードしたくないと判断するまで素晴らしく機能しました。問題は、テキストを編集しようとするたびにアプリがクラッシュすることです(EXC_BAD_ACCESS)。なぜこのようにすべきなのか分かりません。ここに私のコードがある - の通路は、アプリがクラッシュしたとマークされています

- (void)viewWillAppear:(BOOL)animated { 

// Make the keyboard appear when the application launches. 
[super viewWillAppear:animated]; 
// [textView becomeFirstResponder];} 

そして:

- (BOOL)textViewShouldBeginEditing:(UITextView *)aTextView { 


    // this crashes app if no keyboard is loaded in viewdidload: 

     if (textView.inputAccessoryView == nil) { 
     textView.inputAccessoryView = accessoryView;  
     self.accessoryView = nil; 

} 


    return YES; 
} 

文の場合、私は最後をコメントアウトした場合、アプリが動作します...しかし、私はドン私のaccessoryViewはありません。 InterfaceBuilderで何か問題が起きた可能性がありますか? accessoryViewは私のViewControllerの別のビューです。しかし、正しく接続されています(キーボードを使ってアプリを起動すると完全に機能します)。

アイデアをいただければ幸いです。申し訳ありませんが、これは明らかですが、私はまだ初心者であり、これらの事は大きな頭痛を引き起こします。

答えて

1

EXC_BAD_ACCESSエラーは、割り当てが解除されたオブジェクトにメッセージを送信しようとすると発生します。あなたのivarsを設定するときに、自動解放されたオブジェクトを返す便利なメソッドを使用する場合はretainを呼び出していることを確認してください。

これが機能しない場合は、NSZombieEnabledを使用して、割り当て解除されたオブジェクトにメッセージを送信する場所を追跡できます。

私は、カップルは、あなたが見て取ることができるガイドが見つかりました:おかげで、本当に便利

http://www.fromconcentratesoftware.com/2007/08/09/nszombieenabled-for-the-debugger-adverse/

http://collateraldamag3.blogspot.com/2009/11/iphone-tutorial-nszombieenabled-and.html

+0

を!さて、ApporyViewのAppleサンプルのコードをコピーし、アクセサリビューを '@property(nonatomic、assign)と宣言していることがわかります。IBOutlet UIView * accessoryView;'今は '@property(nonatomic、retain)IBOutlet UIView * accessoryView;とアプリはもうクラッシュしません。この場合、保持と割り当ての違いは何ですか? accessoryViewはViewControllerのペン先ですが、アップルはアクセサリのペン先をロードしました。これが理由ですか? –

+0

@ n.evermind assignプロパティとretainプロパティの違いは、合成されたsetterメソッドにあります。 assignの場合、setterは渡された値をivarに代入するだけで、setterは古い値を解放し、ivarを新しい値に設定してretainを呼び出します。詳細については、[宣言されたプロパティ](http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html#//apple_ref/doc/uid/)を参照してください。 TP30001163-CH17-SW1)のAppleからの文書 –

関連する問題