私はObjective-Cクラスを持っており、そのインスタンスは不要になったときにそれを検出して自分自身を破壊することができますが、オブジェクト自体の内部からオブジェクトの自己破壊をトリガーする安全な方法を探しています。破壊を呼び出す」...私のコードはおおよそ次のようになります(簡潔にするために一部削除されています):
+ (oneway void)destroyInstance:(id)obj {
printf("Destroying.\n");
if (obj != nil) {
free(obj);
obj = nil;
}
}
- (oneway void)release {
_noLongerRequired = [self determineIfNeeded]; // BOOL retVal
if (_noLongerRequired) {
[self deallocateMemory]; // Free ivars etc (NOT oneway)
[MyClass destroyInstance:self]; // Oneway
}
}
を呼び出すと-release
、すぐにメインスレッドに戻るはずです(のためoneway
)。
一方、インスタンスが不要になった場合は、oneway
クラスメソッドを呼び出してdestroyInstance:
、ランタイムから自分自身を削除する必要があります。私の質問は、これは安全ですか?そして、私はoneway
正しく使用しましたか?インスタンスが戻る前にインスタンスの関数を破棄する可能性があるように思われます-release
が、これは...かなり悪いかもしれません。
(追記:明らかにNSObjectなどとは何の関係もありません:)
)