0

私は cocoa/xcode を初めて使用し、Xcode 4.3.2 で cocoa アプリを作成しています。私のターゲットは 10.5 で、ベース SDK は 10.7 です。10.5以降をサポートする必要があります。

手動のメモリ管理を使用しましたが、アプリは 10.7、10.8、および 10.9 で正常に動作します。10.6でも動作するようです。

10.5の場合(システムは持っていませんが、レポートから)

私はこれらのエラーをたくさん受け取っています、

Oct 22, 2013 3:44:08 PM: *** _NSAutoreleaseNoPool(): Object 0x1126f49b0 of class NSCFString autoreleased with no pool in place - just leaking
Stack: (0x7fff823a11e8 0x7fff822b9771 0x10002cfb0 0x10002bc19 0x10002add1 0x7fff822bfd35 0x7fff8467ed0f 0x7fff8467ebd1)
Oct 22, 2013 3:44:08 PM: *** _NSAutoreleaseNoPool(): Object 0x1126f4c90 of class NSCFSet     autoreleased with no pool in place - just leaking
Stack: (0x7fff823a11e8 0x7fff822b9771 0x7fff82315748 0x10002bc52 0x10002add1 0x7fff822bfd35 0x7fff8467ed0f 0x7fff8467ebd1)

私のコードでは、メインスレッド以外のスレッドに autoreleasepools を使用しました

@autoreleasepool
{
  //whatever code calling autorelease on objects..  
}

メインスレッドについては、プールが自動的に提供されると仮定して、プールを提供していません。上記のエラーは、autoreleasepool ブロッ​​クが 10.5 と互換性がないためでしょうか? それとも、10.5 でもメイン スレッドの自動解放プールが自動的に提供されるという私の仮定は正しくないのでしょうか? これは、少なくとも 10.7 以降では正しいです。10.5で何が起こっているのかわかりません。

どんな提案も素晴らしいでしょう..

4

2 に答える 2

0

のシンボリック ブレークポイントを追加します(これを行う方法に慣れていない場合は、開発者フォーラムNSAutoreleaseNoPool()を参照してください)。これにより、この方法でオブジェクトを作成するとデバッガーが起動し、どのスレッドで問題が発生しているかが正確にわかります。

于 2013-10-23T21:43:25.647 に答える