2009-04-29 10 views
1

私はCocoaアプリケーションを開発していますが、Xcodeで自分のアプリケーションを実行するたびに次のようなメッセージが表示されます。デバッグコンソール:Cocoaの開発:malloc:free_garbage:ppt = 0x18a15e0、refcount = 1のエラーが発生しない

<マイアプリ名>(952,0xb0103000)はmalloc:free_garbage:ガベージPTR = 0x107b2f0、持っているが、非ゼロの参照カウント= 1

は私がMallocStackLoggingとNSZombieEnabledオンにしていましたmalloc_historyこれらのアドレスのカップルについては、 e底。

一般的なスレッドは、エラーのあるすべてのブロックでNSPopupButtonCellを参照しているようです。

私の推測では、CFRetainedされているが、リリースされていないか、またはガベージコレクタブルにされています。

A)これは私の一部のプログラミングエラー、またはGC用に正しく更新されていないフレームワークの何かになりそうですか?

B)このメッセージを引き起こす問題の結果はどうなりますか?つまり、このメッセージに注意を払う必要があるのですか、それとも無視することはできますか?

[2] [arg = 48]:thread_a003d720 | start |メイン| NSApplicationMain | - [NSApplication run] | - [NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] | _DPSNextEvent | BlockUntilNextEventMatchingListInMode | ReceiveNextEventCommon | RunCurrentEventLoopInMode | CFRunLoopRunInMode | CFRunLoopRunSpecific | __CFRunLoopDoObservers | _handleWindowNeedsDisplay | - [NSWindow displayIfNeeded] | - [NSView displayIfNeeded] | - [NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] | - [NSThemeFrame _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] | - [NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] | - [NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] | - [NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] | - [NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] | - [NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] | - [NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] | - [NSView _drawRect:clip:] | - [NSControl drawRect:] | - [NSMenuItemCell drawWithFrame:inView:] | - [NSPopUpButtonCell _drawIndicatorWithFrame:inView:] | - [NSPopUpButtonCell _indicatorFrameForCellFrame:inView:] | - [NSPopUpButtonCell _indicatorFrameForCellFrame:isFlipped:] | - [NSPopUpButtonCell _defaultIndicatorImage] | - [NSPopUpButtonCell _coreUIDefaultIndicatorImage] | + [NSImage imageNamed:] | + [NSImage _coreUIImageWithName:] | + [NSImage _coreUIImageWithBaseName:state:backgroundStyle:] | - [NSCoreUIImageRep imageWithoutEffectsRect] | SizeForImageOptions | CUICopyMeasurements | CUIRenderer :: CopyMeasurements(CGRect、 CGContext *、__CFDictionary const *、 __CFArray const *)| CUIRenderer :: CopyImageMeasurements(long、 CUIContext const *、__CFArray const *、 __CFDictionary *)| CreateImageSourceFromDisk(long、 CUIContext const *、long *、unsigned char *)| CUISharedArtReader :: CreateImageSource(long) | CGImageSourceCreateWithDataProvider | CGImageReadCreateWithProvider | CGImageReadCreateWithData | _CGImageReadCreate | _CFRuntimeCreateInstance | | CFAllocatorAllocate | auto_zone_allocate_object [4] [arg = 0]を呼び出します。thread_b0103000 | thread_start | _pthread_start | auto_collection_thread(void *)| auto_collect_with_mode(Auto :: Zone *、 unsigned int)| auto_collect_internal(オート::ゾーン*、 INT)

答えて

2

これは実際にはXcodeで使用される低レベルのフレームワークにあり、NSImageを使用するガベージコレクションアプリケーションでも同じ(無害ですが厄介な)メッセージが生成されます。これらを黙らせる

一つの方法はここにある:http://0xced.blogspot.com/2008/09/quietxcode.html

+0

それはまさに私が知る必要があったことであり、そのアプリの見た目はメッセージを取り除く良い方法に見えます。ありがとう! –

+0

QuietXcodeは、Xcodeが生成したゼロ以外の保持カウントメッセージだけを静かにしているように見えますが、私のアプリケーションからのメッセージではありません。 しかし、まだインストールする価値があります。 –

0

私はXcodeのと、このすべての時間を参照してください。これはXcode自体のメモリ管理の問題であり、あなたのプログラムとはまったく関係ありません。

エラーがプログラムに関連していた場合、デバッグウィンドウ(shift-command-rを押したときに表示されるエラー)とシステムコンソールにエラーが表示されます。

これらのXcode mallocメッセージはシステムコンソールでのみ表示されるため、問題はありません。

ここで、Appleのこの号は、数トンのメモリエラーログをシステムコンソールにダンプするIDEをリリースしましたか? は心配するかもしれません:)

+0

これらは、デバッグウィンドウに直接来ている、私の私のappnameのではなく、Xcodeの(あなたが話をしているシステムコンソール内のもののやり方を)始まります。 質問を編集してより明確にします。 –

+0

その場合、間違いなくそれらをスローするプログラムです。私はGCを使用していないので、私はデバッグにはあまり役に立たないでしょう。がんばろう! –

関連する問題