【发布时间】:2019-03-16 01:42:11
【问题描述】:
我有一个名为 MyManager 的单例类。我在其块内使用 self:requestSomeInfo 和 requestSomeInfoWithString。
requestSomeInfoWithString 方法获取 self.string 作为参数。
此代码是否会导致两个块中的保留循环?
该项目使用 ARC。
@interface MyManager : NSObject
+ (instancetype)sharedInstance;
- (void)requestSomeInfo:(void (^)(BOOL success))completion;
- (void)requestSomeInfoWithString:(NSString *)string completion:(void (^)(BOOL success))completion;
@end
@implementation MyManager
+ (instancetype)sharedInstance {
static MyManager *shared = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
shared = [MyManager new];
});
return shared;
}
@end
@interface MyClass
@property string;
@end
@implementation MyClass
.....
[[MyManager sharedInstance] requestSomeInfo:^(BOOL success) {
if (success) {
[self someAction];
}
}];
[[MyManager sharedInstance] requestSomeInfoWithString:self.string completion:^(BOOL success) {
if (success) {
[self someAction];
}
}];
.....
@end
【问题讨论】:
标签: objective-c memory-management singleton