Objective c 使用来自另一个类的方法的数据更新视图

Objective c 使用来自另一个类的方法的数据更新视图,objective-c,ios,xcode,Objective C,Ios,Xcode,我正在尝试使用实用程序类的方法中的一些数据更新我的UIProgressView。 现在,就因为要更新我的UIProgressView,我在视图控制器类中保留了该方法,所以一切正常。因为我可以使用全局变量到达该方法中的循环,所以我可以更新我的进度。但是,如果我想将此方法移动到我的实用程序类中,我应该做什么来通知我的UIProgressView。谢谢。我的建议是将实用程序类重新设计为 下面是实用程序类的代码示例: UtilityClass.h文件: @interface UtilityClass :

我正在尝试使用实用程序类的方法中的一些数据更新我的
UIProgressView

现在,就因为要更新我的
UIProgressView
,我在视图控制器类中保留了该方法,所以一切正常。因为我可以使用全局变量到达该方法中的循环,所以我可以更新我的进度。但是,如果我想将此方法移动到我的实用程序类中,我应该做什么来通知我的
UIProgressView
。谢谢。

我的建议是将实用程序类重新设计为

下面是实用程序类的代码示例:

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
    dealloc
    release
    etc(如果使用ARC,覆盖方法的列表会有所不同),尽管
    dispatch\u once
    会处理
    @synchronize()
    调用。现在,只要你“实例化”你的类就可以了 通过调用
    sharedInstance
    class方法,您就可以了