我有一个需要处理大量UIAlertViews的视图控制器,所以理想情况下我不想将委托设置为self,并且在警报视图上使用标签处理所有内容 - 除非这是首选方法。
如果我创建一个实现UIAlertViewDelegate的类,我在哪里/如何安全地释放它?
-(void)myMethod {
MyUIAlertViewDelegate *myDelegate = [[MyUIAlertViewDelegate alloc] init];
UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle ... delegate:myDelegate ...
[myAlertView show];
[myAlertView release];
}
有哪些建议可用于创建此类自定义委托?
答案 0 :(得分:1)
我不确定你能从中获益。您是否为每个警报视图创建了一个新的类实例?这对我来说似乎是不必要的开销。但是,使用标签不一定非常麻烦;只需使用委托方法调用其他方法来执行您想要的操作:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
switch ([alertView tag]) {
case kWidgetATag:
[self doSomethingForWidgetA];
case kWidgetBTag:
[self doSomethingForWidgetB];
}
}
答案 1 :(得分:0)
我认为释放视图控制器的最佳方法是使用名为last的方法:
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
[self release];
}
答案 2 :(得分:0)
拥有一个仅用于处理UIAlertView方法的类似乎很奇怪。
通常,某些视图控制器会直接关注UIAlertView结果的结果。该视图控制器将实现UIAlertViewDelegate协议,创建并呈现UIAlertView(设置委托给自己),然后接收其委托消息。
ViewController将根据需要更新View或Model关注点。