2011-09-14 9 views
1

[未種類リリース]:メッセージが0x5853f00はこのエラーを取得して割り当て解除インスタンスに送信ビュー[未種類リリース]:割り当て解除インスタンスに送信されたメッセージ0x5853f00

AnotherView* obj = [[AnotherView alloc] init]; 
[self.view addSubview:obj.view]; 
[obj release]; 
+0

あなたのAnotherViewはUIViewControllerまたはUIViewのサブクラスですか? – Krishnabhadra

+0

UIViewの場合、** [self.view addSubview:obj] **は十分です – Krishnabhadra

+0

それは@interfaceのサブクラスであるEAGLViewのサブクラスですEAGLView:UIView { – user939171

答えて

0

を追加するときは、解除することはできません助けてください[self.view addSubview:obj.view]はオブジェクト全体ではなくobjのビューを追加するためです。 これをリリースし、画面上にビューが表示された場合、一部のメッセージが割り当て解除されたオブジェクトに送信される可能性があり、クラッシュする可能性があります。

+0

私はあなたの言うことに従っていますが、今このエラーが発生しています。NSInvocation:警告:クラス '_NSZombie_Not A Type'の0x4b962d0オブジェクトがdoesNotRecognizeSelectorを実装していません: - abort – user939171

+0

[obj release]行を削除し、問題。 – Hitesh

+0

はいまだまだエラーが発生しています – user939171

1

[UIViewビュー]を現在のビューに追加しています。 UIViewにはビュープロパティはありません。

指摘したように、UIViewオブジェクト自体を追加する必要があります。 OpenGLのコンテキストで

、あなたはまた、ドキュメントの言うことを考慮する必要があります。

注意:あなたがあなたの描画を行うためにOpenGL ESのを使用している場合は、あなたのビューののdrawRect:メソッドが呼び出されません。代わりに、ビューを再描画する必要があるかどうかを判断し、適切な図面の更新を開始するのはあなた次第です。

したがって、UIVIewが正しく初期化されていることを確認してください。

+0

ありがとうございます。私はopen glプログラミングでうまくいかず、私はそのコードやサンプルコードをどうすればいいのか教えてください – user939171

1

すでにリリースされたインスタンスにメッセージを送信すると、このエラーが発生します。だから私はあなたのコードで疑うことは、いくつかのビューを作成し、あなたはそれを他のビューに追加し、以前に作成したビューをリリースしたということです。今すぐリリースされた最初のビューに対して実行されたアクションがあれば、例外が発生します。 :First Viewにはボタンが含まれ、このボタンのタッチアップのアクションはFristViewControllerに書き込まれます。これでFirstViewのインスタンスが作成され、2番目のビューに追加されてfirstviewインスタンスが解放されました。ユーザーがFirstViewのボタンをタップすると、iOSはすでにリリースされているコントローラ(FirstViewController)を検索し、この問題が発生します。 問題を取り除くには、インスタンスに自動リリースメッセージを送信して正常に動作します。

この問題の主な理由は、addSubviewは保持カウントを処理しないことです。 これがあなたを助けてくれることを願っています。

+0

AddSubviewはカウントを保持しています - View param: '追加するビュー。このビューは受信者によって保持されます。追加した後、このビューは他のサブビューの上に表示されます。 ' –

+0

一つのことをしてください。サンプルアプリケーションを作成し、私が記述したものを実行すると、それが表示されます。すぐにクラッシュすることはありません(リリースメッセージは表示であるため、リリースする必要はありません)。しかし、いったんiOSによってリリースされると、あなたはそれに実装されたアクションを呼び出すでしょう、あなたは(確かに)この問題に直面します。 – UPT

関連する問題