- (void)test
{
__weak typeof(self) weakSelf = self;
[weakSelf test];
}
компиляции вКак кланг реализует слабый ptr?
static void _I_Foo_test(Foo * self, SEL _cmd) {
__attribute__((objc_ownership(weak))) typeof(self) weakSelf = self;
((void (*)(id, SEL))(void *)objc_msgSend)((id)weakSelf, sel_registerName("test"));
}
в Objective-C.
Слабый компонент предоставляется компилятором, а не некоторой библиотекой, например std::share_ptr
в C++.
Как компилятор реализует слабый ptr, будет ли это что-то вроде этого.
-(void)dealloc
{
self.weakRef = nil;
...
}
-(void)test
{
self.weakRef = new WeakRef(self);
}