也许我工作时间太长了,但有这个问题......让我们抽象一下,真名并不重要。
我有 20 多个类继承自它的超类 Car
@interface Car : NSObject;
@interface Volvo : Car;
@interface BMW : Car; etc...
在我的游戏课上,我有沃尔沃、宝马的财产
@property (nonatomic, strong) Volvo *volvo;
@property (nonatomic, strong) BMW *bmw;
@property (nonatomic, strong) Car *activeCar;
我动态创建这些对象并将activeCar存储在属性activeCar中
_bmw = [[BMW alloc] init];
_activeCar = _bmw;
现在在重新启动方法中,我希望能够 nil active car,但即使在日志中我看到两者都指向同一个地址,它也不是 wokring:
_activeCar = nil; // dealloc on BMW and Car is not called
// _bmw = nil; // dealloc is called properly on BMW and Car class
怎么能管得住?这是唯一的解决方案吗?
if ([_activeGame isKindOfClass:[BMW class]])
_bmw = nil;