我有一个具有强属性SomeClass
的类实例,该实例仅由该单个实例引用。在某个时候,此强属性会被新创建的实例覆盖,该实例将分配给该强属性。
@implementation SomeClass
- (instancetype)init;
{
static NSInteger idx = 0;
NSLog(@"I am %", idx++);
self = [super init];
return self;
}
- (oneway void)dealloc;
{
NSLog("bye");
}
@end
然后,在包含引用的类中:
@property (nonatomic, strong) SomeClass *prop;
...然后
self.prop = [[SomeClass alloc] init]; /// first time assigned
...然后
self.prop = [[SomeClass alloc] init]; /// second time assigned
通常,顺序为:
输出如下:
I am 0
I am 1
bye
但是,顺序是否有可能颠倒了?
是否有可能获得这样的输出?
I am 0
bye
I am 1
例如,如果SomeClass -init
方法执行了一些CPU繁重的任务,但仍在同一/主线程中?
答案 0 :(得分:0)
在线
self.prop = [[SomeClass alloc] init];
等号右边的内容发生在实际分配之前。毫无疑问,要在分配之前取消分配现有对象。因此,在有任何关于分配现有对象的问题之前,将打印“我是...”。