我应该在课程之间共享UIAlertView吗?

时间:2014-09-16 13:57:45

标签: ios objective-c singleton uialertview

我在整个应用中使用UIAlertView警告有关互联网连接问题。现在,我创建了一个新的,并在每次需要时显示。我的应用程序是一个有很多类和交互性的大应用程序,因此,我非常关注性能。我已经在一些地方看到,人们用所有UIAlertViews创建一个类只是为了在需要时显示它们,现在,这将使我的代码更有条理,但是因为我将不得不每次都实例化该类的对象。

我已经有一个singleton课程,我的问题是:我应该在我的单身人士上创建一个方法alloc, init并显示我的alerts吗?或者甚至将警报保存在property上,这样我就不需要实例化一个新警报了?如果我将它保存到property,它将在我的应用程序的整个生命周期中记忆,对吧?所以我不确定这是不是一个好主意。

我的问题是:关注性能和代价较低的代码,这里最好的方法是什么?

2 个答案:

答案 0 :(得分:1)

将所有警报都放在一个地方是很好的,但是不要使用单例模式,只需创建 static / 类方法。

除非你经常发出警告,否则你可能不应该这样做,将UIAlertView对象留在内存中没有任何好处。分配和初始化UIAlertView对象的成本不是您应该担心的。

答案 1 :(得分:0)

你可以写一个为你做一些事情的AlertMessenger。但也许你的要求不仅仅是这个例子。

AlertMessenger.h

@interface AlertMessenger : NSObject

+ (void)showMissmatchAlertWithTitle:(NSString*)title;

// will be called with predefined texts from the methods above
+ (void)showAlertWithTitle:(NSString*)title
               withMessage:(NSString*)message
            withCancelText:(NSString*)cancelText;

@end

AlertMessenger.m

#import "AlertMessenger.h"

@implementation AlertMessenger

+ (void)showMissmatchAlertWithTitle:(NSString*)title {
    [self showAlertWithTitle:title
                 withMessage:NSLocalizedString(@"nothing_found",@"")
              withCancelText:NSLocalizedString(@"close",@"")];
}

+ (void)showAlertWithTitle:(NSString*)title
               withMessage:(NSString*)message
            withCancelText:(NSString*)cancelText {
    UIAlertView *alert= [[UIAlertView alloc] initWithTitle:title
                                                   message:message
                                                  delegate:nil
                                         cancelButtonTitle:cancelText
                                         otherButtonTitles:nil];
    [alert show];
}

@end

如果你认识到一个不匹配(在我的例子中)你可以写:

[AlertMessenger showMissmatchWithTitle:@"Search"]