我为UIAlerts创建了实用程序类。我正在使用块
用户应该创建的代码如下所示:
MyAlertMessage * a = [[MyAlertMessage alloc] initWithTitle:@"Hello" WithMessage:@"World"];
[a addButton:BUTTON_OK WithTitle:@"OK" WithAction:^(void *action) {
NSLog(@"Button OK at index 0 click");
}];
[a addButton:BUTTON_CANCEL WithTitle:@"Cancel" WithAction:^(void *action) {
NSLog(@"Button Cancel at index 1 click");
}];
[a show]
可在此处查看完整课程:https://github.com/MartinPerry/UIAlert
现在,如果我这样做,在[演出] ARC摧毁我的课程之后,所以格挡不再有效并且给我错误。我通过创建单独的类来解决这个问题,该类包含对创建的MyAlertMessage的引用(消息广告并从此管理器中销毁自己)。这是正确的解决方案还是应该做得更好,没有这个单身经理?
可在此处找到经理和相应的课程:https://github.com/MartinPerry/UIAlert/blob/master/UIAlert/MyAlertMessage.m
答案 0 :(得分:1)
您发布的示例代码使用局部变量来创建MyAlertMessage对象。因为它是一个局部变量,所以一旦执行离开当前的大括号(方法,if语句,等等),它就会超出范围。一旦发生这种情况,没有人对该对象有强引用,因此它会被释放。
将MyAlertMessage变量设为实例变量,并在完成后将其设置为nil。