我制作了一个自定义指示器,我可以通过一个块运行代码并在代码运行时显示一个指示器。
代码完成后,我调用第二个成功块并隐藏/删除指示符。
因为我不想实例化我想要使用它们的类中的每个指示符,所以指标对象是单例。
工作流:
当我在彼此之后使用两个指示符时出现问题(登录后示例:,刷新数据)。
当显示第二个指示符时,在第一个实例上调用hide方法。在第二个指标中,指标视图将从超级视图中删除。
我没有管理自己的线程锁的经验,但我想用@synchronized(self)
解决问题,但似乎它没有效果?
+ (Indicator *)create
{
if (!sharedIndicator)
{
sharedIndicator = [[Indicator alloc] initWithNibName:@"Indicator" bundle:nil];
}
return sharedIndicator;
}
+ (Indicator *)createWithDelegate:(id <IndicatorDelegate>)delegate
message:(NSString *)message
inView:(UIView *)parentView
{
Indicator *indicator = [Indicator create];
[indicator setDelegate:delegate];
[indicator setMessage:message];
[indicator setParentView:parentView];
return indicator;
}
+ (void)showInView:(UIView *)view
withMessage:(NSString *)message
execute:(BOOL (^)(void))executeBlock
complete:(void (^)(BOOL success))completed
{
Indicator *indicator = [Indicator createWithDelegate:nil message:message inView:view];
[indicator show];
__block BOOL success = NO;
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^
{
success = executeBlock();
dispatch_async(dispatch_get_main_queue(), ^
{
completed(success);
[indicator hide];
});
});
}
答案 0 :(得分:0)
每次显示指标时,您都会获得相同的View,因为它与sharedInstance相关联。