0

我正在尝试UIProgressView使用我的实用程序类的方法中的一些数据来更新我的。现在,仅仅因为更新我的UIProgressView,我在我的视图控制器类中持有该方法并且一切正常。因为我可以使用全局变量到达该方法中的循环,所以我可以更新我的进度。但是,如果我想将此方法移动到我的实用程序类中,我应该怎么做才能随时了解我的UIProgressView. 谢谢。

4

1 回答 1

1

我建议将您的实用程序类重新设计为单例

这是您的实用程序类的代码示例:

UtilityClass.h 文件:

@interface UtilityClass : NSObject

+ (UtilityClass *)sharedInstance;

- (CGFloat)awesomeMehod;

@end

实用程序类.m

@implementation UtilityClass

+ (id)sharedInstance
{
    static UtilityClass *_instance;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _instance = [[UtilityClass alloc] init];
    });
    return _instance;
}

- (id)init
{
    self = [super init];
    if (!self) return nil;

    // Regular initialization, however keep in mind that it will be executed just once

    return self;
}

- (CGFloat)awesomeMethod
{
    return 42.0f
}

@end

现在从您的视图控制器中,您将调用

CGFloat progress = [[UtilityClass sharedInstance] awesomeMethod];
[self.progressView setProgress:progress];

请记住几件事:

  • 这是一种可能的方法,我会去阅读 可能有一天会派上用场的各种设计模式

  • 刷新有关视图控制器及其交互方式的知识可能是一个好主意

  • 为了使类成为正确的单例,您还应该覆盖诸如alloc, init, initWithZone, 等方法(如果使用 ARC,要覆盖的方法列表会有所不同),dealloc是一个这样做的示例,尽管需要注意 调用。现在,只要你只通过调用类方法“实例化”你的类,你就可以了。releasedispatch_once@synchronize()sharedInstance

于 2012-08-15T07:31:33.810 回答