私の質問は、Foundationの現在のバージョン(またはObjective-Cランタイムライブラリは、そこにあるようだから)NSObject
派生オブジェクトの保持カウントを実装する方法ですか?私がNSObject.mmに見ることができたように、NSObject
のインタフェース本体にretain count
という象牙はありません。代わりに、各オブジェクトの参照カウンターを含む一種のテーブルまたはマップがあるようです。しかし、保持カウントが実際にマップで行われている場合は、retain
とrelease
の操作がこの種の実装で高価すぎるのではない(この場合、ミューテックスをロックしたりアンロックしたり、マップを参照して適切なオブジェクトを見つける必要があるマルチスレッド環境では、一度に1つのオブジェクトしか保持/解放できないという事実)保持カウントはNSObjectでどのように実装されていますか?
私はそれが取得する(objc-runtime-new.mmで、どちらもNSObject.mmで_objc_rootAllocWithZone
中([NSObject alloc]
によって呼び出される関数であると思われる)も_class_createInstanceFromZone
に新しいオブジェクトを割り当てるときに1に維持するカウンタを設定するに関連する何かを見つけることができませんでした後に_objc_rootAllocWithZone
と呼ばれる)。
- (NSUInteger)retainCount {return rand()}; – CodaFi
ああああ、私は終わりを間違ってしまった; ...私は今夜寝ることはありません。 – CodaFi