9

Objective-cでは、静的変数(すべきか?)がプログラムの存続期間中その値を保持することを知っています。しかし、それがポインタを格納している場合、それはARCで強力であると見なされますか?私はそれに依存し、静的変数に割り当てた後、そのインスタンスがヒープから出ることは決してないことを保証できますか?

static ClassA* shared;

-(id)init
{
   if (self=[super init]) {
       shared=self;
   }
   return self;
}
4

2 に答える 2

16

はい、割り当てられたら、信頼できます。

ARCリリースノートへの移行の状態:

ARCでは、オブジェクトタイプのデフォルトはstrongです。

その後:

__strongがデフォルトです。オブジェクトへの強力なポインタがある限り、オブジェクトは「生きている」ままです。

ポインタstaticがオブジェクトを参照している場合、オブジェクトは「生きている」ままになります。ポインターのスコープ(グローバル、スタック上のポインター、またはインスタンス変数)に違いはありません。

于 2013-01-22T23:39:00.777 に答える
0

シングルトンを実装する必要があるようです。インスタンスをnilに設定することで、シングルトンを取り除くことができます。

于 2013-01-23T00:10:48.950 に答える