2009-08-18 8 views
1

私はtmpに@がすでにリリースされ@ ---」次にiPhoneがリリースされたオブジェクト&を覚えてどのように、我々はテキストを設定することができ、ここでタグはリリースされたオブジェクトをどのように覚えていますか? iPhone

-(UITableViewCell*)getCellContentView:(NSString*)cellIdentifier 
{ 
CGRect photoFrame=CGRectMake(10, 10, 60, 60); 
CGRect label1Frame=CGRectMake(85, 9, 200, 32); 
CGRect label2Frame=CGRectMake(85, 38, 200, 25); 
CGRect labelBgFrame=CGRectMake(0, 0, 320, 80); 

UITableViewCell *cell=[[[UITableViewCell alloc] initWithFrame:CGRectMake(0, 0, 300, 80) reuseIdentifier:cellIdentifier] autorelease]; 


UILabel *tmp; 
tmp=[[UILabel alloc] initWithFrame:label1Frame]; 
tmp.tag=1; 
tmp.textColor=[UIColor blackColor]; 
tmp.font=[UIFont boldSystemFontOfSize:18]; 
tmp.backgroundColor=[UIColor clearColor]; 
[cell.contentView addSubview:tmp]; 
[tmp release]; 
} 

以下に示すカスタマイズされたのUITableViewCell、 を作成するために、別の方法を持っていますそのラベル

答えて

2

私は私はあなたの質問を理解すると思う:。?あなたは[TMPリリース]呼び出した後cell.contentViewは、その内容を維持してどのように求めているが、右

もしそうなら、答えはそのaddSubview単位であるということです参照カウント(呼び出し保持する)。したがって、あなたが[tmp release]を呼び出した後でさえ、tmpはまだ1の参照カウントを持っています。

私はiPhone SDKに触れてからしばらくしていましたが、それは正しいと思います。訂正は大歓迎です。

+1

あなたは正しい、アレックス。 cell.contentViewには保持されたポインタがあるため、tmpオブジェクトはまだ解放されていません。 sagarの場合、保持カウントを確認するには、NSLog(@ "retainCount is now dd"、[tmp retainCount])行を追加します。あなたのコードのいくつかの場所で。あなたはそれが1から2になり、最後に1に戻ることを見るでしょう - 決して0ではなく、実際にそれをリリースします。 – Tyler

+1

タイラー、フィードバックに感謝します。 – Alex

関連する問題