Objective-Cのダイナミックランタイムの理解
-
14-09-2019 - |
質問
私はObjective-CとCocoaで足を濡らしています(おそらく遅れていますが、どこかから始めなければなりません)。すべてのオブジェクトがヒープから割り当てられていることに気付きました。
これがObjective-Cの標準である理由はありますか?私はどこにでも見てみました(そして、はい、Stackoverflowでも)が、「それがどのようになっているか」を除いて、明確な理由を見つけることができませんでした。 Objective-CはOO機能を備えたCの厳格なスーパーセットと見なされるため、特に熱心です。
の記事を見逃した場合 インターブグ または、このトピックに関する誤ってStackoverflowに関する投稿をしてください。優雅なシャットダウンを開始してください。 :)
解決
これはスモールトークの遺産に負っていると思います。
また、スタックに割り当てられたオブジェクトはC ++の特異性であると言えます。他の言語はほとんどありませんが、主にコンパイラの低レベルの最適化として行われます。 C ++では、述べられた目標の1つが まさに プレーンCのようにパフォーマンス
Objective-CがCのスーパーセットであるという事実と対立するのはなぜですか?結局のところ、Plain Cはスタックにオブジェクトを割り当てることはできません... struct
s、otohは、CとObjective-Cの両方でスタックで許可されます
他のヒント
私はあなたの質問に正確に答えているわけではありませんが、あなたはOBJ-Cのランタイムを理解しているので、ここに行きます。 NSZONESを使用して、オブジェクトをより効率的に割り当てることができます。スタックにはそれらを置くことはありませんが、少なくとも断片化やパフォーマンスの問題を回避できます。テキストをリンクします