【发布时间】:2017-12-23 04:29:23
【问题描述】:
如我们所知,我们将声明一个可以打破强引用循环的弱委托对象:
// MyObject.h
...
@property (nonatomic, weak) id<MyDelegate> delegate;
...
// ViewController.m
...
self.myObject.delegate = self;
...
我想知道:我们可以用strong声明委托,并为其设置一个weakSelf:
// MyObject.h
...
@property (nonatomic, strong) id<MyDelegate> delegate;
...
// ViewController.m
...
__weak typeof(self) weakSelf = self;
self.myObject.delegate = weakSelf;
...
【问题讨论】:
-
你可以,但你不应该故意创建潜在的强引用循环;从逻辑上讲,当您将
weakSelf分配给您的strong属性时,它立即获得了strong引用。 -
会不会造成引用循环?
-
只要你有一个
strong指针,你可以在这种情况下创建一个强引用循环。
标签: ios memory-management delegates