2010-12-07 8 views
0

これは私のシナリオです 私はサブビューの複数のコピーが作成されるメインビューを持っています。 これは私がやっている方法です 1.メインビューで、私はサブビューの変数を作成しました 2.サブビューの複数のコピーを作成し、うまく動作するスクロール可能なビューの中に表示しました 3.いつサブビュー変数を解放するための適切な時間?iphone;複数のコピーがそこから派生したときにビューを解放するときは?

サブビュー宣言 サブビュー* svm;

svm=[[SubView alloc] initWithNib:@"SubView" bundle:nil] 
//Show svm here 
// am not releasing svm here 
svm=[[SubView alloc] initWithNib:@"SubView" bundle:nil] 
//Show svm here 
// am not releasing svm here 
svm=[[SubView alloc] initWithNib:@"SubView" bundle:nil] 
//Show svm here 
// am not releasing svm here 

これは正しい方法だとは分かりませんが、うまくいきます。

私がメインビューのdeallocでsvmをリリースした場合、これは問題ありませんか?これについてどうすればいいですか?

おかげ Veeru

答えて

1

新しいメモリは、新しいインスタンス用に割り当てられますALLOCたびに。新しいインスタンスを作成する前に解放する必要があるメモリリークを防止します。ところで

 
svm=[[SubView alloc] initWithNib:@"SubView" bundle:nil] 
//Show svm here 
[svm release]; 

svm=[[SubView alloc] initWithNib:@"SubView" bundle:nil] 
//Show svm here 

[svm release]; 
svm=[[SubView alloc] initWithNib:@"SubView" bundle:nil] 
//Show svm here 
[svm release]; 

あなたはそれはそれは、スーパービューだと、もはやあなたのコードによって直接アクセスすることが必要になった場合は、安全に解放することはできませんが保持します別のビューにサブビューとしてあなたSVMを追加します。

+0

私がリリースした場合、アプリケーションは、サブビューのビューロードで実行されるすべての操作でクラッシュし、その原因は、操作が完了する前でもメモリから解放されていると推定されます。 – Veeru

+0

リリースする前にスーパービューにビューを追加する必要があります。 – Gu1234

+0

もちろん、スーパービューに追加しています。それでスーパービューに追加されたビューを解放するのは安全ですか?サブビューがロード/表示されるときにいくつかのタスクが発生していますが? – Veeru

関連する問題