我有一个 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
函数返回之前破坏它,这可能是......相当糟糕......?
(PS:显然不是在寻找与 NSObject 等有关的任何东西:)
)