2011-07-13 12 views
4

メモリリークを削除しようとしています。以下は私のコードです。typedef structのメモリリーク

currentTime = CFAbsoluteTimeGetCurrent(); 

CFTimeZoneRef currentTimeZone = CFTimeZoneCopyDefault(); 

todaysDate = CFAbsoluteTimeGetGregorianDate(currentTime, currentTimeZone); 


[currentTimeZone release]; 
currentTimeZone = nil; 

警告:::/myclass.m:87:警告:無効な受信機タイプ 'CFTimeZoneRef'

のtypedef constの構造体のためのメモリを解放するにはどのように?

答えて

6

CFxxxCopyxxxの場合は、CFReleaseを使用してください。

CFRelease(currentTimeZone); 

編集:Toll-Free bridgedをしているし、元の文が漏れることはなく、単にキャストを必要としていませんでしたCoreFoundationクラスがあり

。 CoreFoundationで直接作業していたので、私はまだCFReleaseを使用することをお勧めします。ドキュメントから

[(NSTimeZone*)currentTimeZone release]; 
0

あなたがオブジェクトを所有している場合、あなたがそれを完了したとき(CFReleaseを使用して) 所有権を放棄するあなたの責任です。

+0

彼はそれをリリースする必要があることを理解した、問題をリリースする方法を知らなかったということでした。 – gaige

+0

"...(CFReleaseを使用して)..." – dasdom

0

あなたはCoreFoundationの呼び出しを使用しているので、代わりに使用してCocoaのreleaseは、あなたが呼び出したいでしょう:

CFRelease(currentTimeZone); 

コピーしたデータを解放するために。

0

はallPeople

CFRelease(allPeople)の後にアドレス帳をrelesingしてみてください。 CFRelease(addressBook);

これは私のために働いた。