5

ランタイムAPIには、文書化されていない関数があります。これは、(いくつかのおもちゃのプログラムに基づいて)その名前が示すとおりに実行するように見えます。

OBJC_EXPORT void objc_disposeClassPair(Class cls) 
     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;

ただし、詳細な情報は地上ではかなり薄いです。したがって、これは単一の質問というよりも、関連する質問の集まりです。

  • それを見る良い記事/ブログ投稿はありますか、または誰かがそれを使用した経験がありますか(簡単なグーグルはPyObjC開発者が少なくともある時点でそれを使用することを検討したことを示唆しています)?
  • 破棄されたクラスは完全に割り当て解除されています(クラスを頻繁に作成および削除するアプリケーションはメモリをリークしますか?)
  • 文書化されていないAPIについて、通常以外に覚えておく価値のある落とし穴はありますか?
  • Appleはどこで使用していますか(/使用される可能性があります)?NSBundleのアンロード?KVO?
4

1 に答える 1

2

破棄されたクラスは完全に割り当て解除されています(クラスを頻繁に作成および削除するアプリケーションはメモリをリークしますか?)

はい、完全に割り当てが解除されます。http://www.opensource.apple.com/source/objc4/objc4-437/test/classpair.mcycleの関数を見ると、複数のクラスの割り当てと割り当て解除の両方が行われていることがわかります。以下の実装は、その機能を100回実行し、リークをチェックします。これは、大幅にリークした実装をリリースしないことを示しています。詳細を知りたい場合は、http://www.opensource.apple.com/source/objc4/objc4-437/runtime/のコードを確認する必要があります。おそらく、Appleの実際のコードは、両方の関数のどこかで、またそれが使用されている場所で見つけることができます。main

于 2011-05-27T06:21:22.467 に答える