2011-10-28 7 views
0

私は電卓アプリケーションを作成しています。これは初めてのiosアプリケーションです。今私は、私はいくつかのリークを見て振り返る。すべてのリークは変更できないNSStringによって引き起こされるので、リークがどこにあるか正確に知っています(リーク - XCODE)。そこで、私もラベルのテキストを変更するための文字列を割り当てるされています:NSStringを変数として使用するとiosでメモリリークが発生する代わりに、代わりに変数として使用するより良いデータ型を提案してください

数が故に(私は多くのことを変更して、再度漏れを引き起こしてしなければならない)別の文字列 、私はラベルを変更するたび、ある
label.text = [[NSString alloc] initWithFormat: @"%@", number]; 

私には漏れがあります。

誰かが使用するデータ型を提案して、オブジェクトのコピーを1つだけ使用し、必要に応じて変更を続けることができますか?または、ラベルを変更する別の方法は、allocを使用せずに、または時間内に解放することです。

私はそれをオートリリースしようとしましたが、アプリケーションをクラッシュさせます。 FYIは、リークと一緒に、アプリは素晴らしい:))(しかし、私は間違って、それゆえ)を知っている

助けてください!

答えて

2

あなたのラベルがUILabelであると仮定すると、あなたの問題は明らかです.UILabelのtextプロパティはretainとして定義されます。allocを実行すると、setterがプロパティを保持するときに+1を保持するオブジェクトが返されますしたがって、あなたが漏れる+2カウントを保持しており、uはあなたのラベルを取り除く際に、1でカウント、事はあなたがメモリ上に読んでください

label.text = [[[NSString alloc] initWithFormat: @"%@", number] autorelease]; 

または

label.text = [NSString stringWithFormat: @"%@", number]; 

のようになります。管理ガイドラインhere

-Daniel

+0

私は両方の答えをあなたが示唆したが、それだけでアプリケーションをクラッシュさせてみました。変数を変更/編集するために使用できる文字列のような他のデータ型はありますか? – pat

+0

あなたのコードに何か他のものがあります...いくつか詳細を表示...どこでクラッシュしますか – Daniel

+0

ダニエルに感謝します。NSStringをNSMutableStringsに変更し、それに応じてコードを修正しました!今はすべて正常に動作し、メモリリークはありません! – pat

0

ではなく、自動解放文字列を使用し、ラベルにテキストを割り当てるための

label.text = [NSString stringWithFormat: @"%@", number]; 

を使用してみてくださいありがとうございました。

ところで...何か番ですか?それは文字列ですか、それとも整数ですか?

その後、memory management on the iOSに関するいくつかのドキュメントをお読みになることをお勧めします。

+0

numberはnsstringオブジェクトです。私も同様の方法で番号の漏れの問題があります。私はあなたのメソッドを試して、上記のいずれかを使用して、いずれかを使用すると、私のアプリケーションがクラッシュする。 – pat

+0

あなたのアプリをクラッシュさせている場合は、メモリ管理だけで大きな問題があります。実際のコード(つまり番号を作成してラベルに割り当てるコード)とともに別の質問を投稿することもできます。 –

+0

michealありがとう、NSStringsをNSMutableStringsに変更し、それに応じてコードを修正しました!今はすべて正常に動作し、メモリリークはありません! – pat

0

使用この代わりに:

label.text = [NSString stringWithFormat: @"%@", number]; 

stringWithFormatは、自動解放プールが排出されたときに、あなたのためにリリースされる自動解放NSStringのを作成します。

+0

私はそれを試みたが、それはアプリをクラッシュさせる! – pat

+0

ここには他に何かがあります。あなたは 'number'がNSStringであると確信していますか?多少のコード​​を掲載して、クラッシュ出力が何であるか正確にお知らせください。 –

+0

ちょっと、appdelegateにすべてのコードを書いてあり、viewcontrollerと.xibファイルを削除しました。私はmainwindow.xibファイルを使用しています。私はなぜこの奇妙なことをやったのか覚えていないが、これが問題だろうか?ここに私のコード全体を載せても大丈夫ですか? – pat

関連する問題