いくつかのオブジェクトを保存できるキャッシュを作成する必要がありますが、メモリの警告が表示されたり、単純にユーザーが必要としている時点で、現時点ではキャッシュにはしか使用されていません。未使用のオブジェクトを要求によってパージできるキャッシュ
つまり、ARCカウント== 1のオブジェクトを除外する必要があります。問題は、このプロジェクトの私のグーグルに基づいて、純粋なSwiftではオブジェクトの保持カウントを得ることができないということです。
私の経験から、Swiftではデフォルトでは不可能であることがわかりました。 Objective-Cで、私はキャッシュから返されたプロキシオブジェクトを、使用していた、そのようなメソッドのオーバーライドた:
// Forward class checks for assertions.
-(BOOL)isKindOfClass:(Class)aClass {return [_target isKindOfClass:aClass];}
- (id)forwardingTargetForSelector:(SEL)aSelector
{
return(_target);
}
をしかしスウィフトイデオロギーには適用されないのはもちろんです。
私は、WeakBoxの配列にキャッシュを置くことを考えていますが、未使用のオブジェクトは使用されなくなり、自分の要件を満たさないときに割り当てが解除されます。
誰かが私にいくつかのガイドをすることができますか?私が気付いていない、そのようなことを達成するための迅速な可能性?
ARAC> 1のオブジェクトをキャッシュに保存したい場合はどうすればよいですか? – s1ddok
彼らはすべての強い参照がなくなるまで消えません。この動作は、強力な参照が定義される方法です。参照を解放するまでオブジェクトは解放されません。キャッシュをいつでも削除できるようにするには、唯一の強力な参照を持つ必要があります。弱い参照とオプションのアンラッピングを使用する必要があります。それらのオブジェクトはいつでも割り当て解除できるためです。 –