-2

Objective-C でアプリケーションを実装していて、分析を開始したところです。一部の画像に問題があるようです。たとえば、私は次のように書いています。

Example = [[UIImageView alloc] initWithFrame:CGRectMake(15, 70, 290, 98.5)];
UIImage * ImageExample = [UIImage imageNamed:@"Test.png"];
Example.image = ImageExample;
[ImageExample release];
[Menu addSubview:Example];
[Example release];

それは私に与えます:

この時点で呼び出し元が所有していないオブジェクトの参照カウントの誤ったデクリメント

私はNSStringそれをローカルにし、使用後にリリースするいくつかの例を見つけました。

では、この種のコードの問題は何ですか?

4

4 に答える 4

4
 UIImage * ImageExample = [UIImage imageNamed:@"Test.png"];

自動解放オブジェクトを与えます。割り当て(所有)していないため、解放できません。

于 2013-09-06T13:03:20.343 に答える
0

あなたは ImageExample を所有していません。だから手放してはいけません。このガイドを見てください: iOS メモリ管理プログラミング ガイド 特に記事「基本的なメモリ管理ルール」について。

于 2013-09-06T13:00:52.240 に答える
-1

編集:

所有しているオブジェクトのみをリリースする必要があります。

メモリを割り当てたオブジェクトのみを解放します。したがって、経験則は、init を使用した場合にのみ release を使用してください。

また、iOS5からですか?Apple は、ARC (Automatic reference Counting) と呼ばれるものを提供してくれました。プロジェクトの作成時にチェックボックスがオンになっていることを確認してください。ARC では、リリース ステートメントをまったく使用する必要はありません。コンパイラがあなたに代わって仕事をします。

ARC は多くのことを簡素化しますが、間違いを犯す可能性もあります。Objective C でのコーディングに慣れたら、 ARCについて一読することをお勧めします。ARC に関連する WWDC セッション ビデオもご覧ください。

于 2013-09-06T13:09:17.583 に答える