我想在共享静态对象(比如称为Manager)中创建一个GCD元素,每隔几秒钟从外部存储库(例如URL)获取一些数据并更改一个UIElement
。申请ViewController
。
我的想法是:
AppDelegate
初始化方法中初始化Manager对象(一旦应用程序被启动)UIElement
(例如,如果它是字符串,则UILabel
会更改,如果是图像URL资源,则UIIMage
将更改)。 我不知道如何从Manager类访问UILabel
元素。我是朝着错误的方向前进还是有其他方式/模式来做到这一点? (我怀疑我需要创建一个静态Logic类,可以通过Manager类中的回调方法函数访问,并且引用包含ViewController
的{{1}}
任何简单但很好的教程都会有很大的帮助。
答案 0 :(得分:0)
您可以通过委派来实现这一目标。为Manager类定义一个名为ManagerDelegate的协议。然后,当经理完成其工作时,它可以向委托人发送有关其已完成或将要做的事情的信息。
一些示例委托方法可以是:
- (void)managerBeganNewFetchRequest:(Manager *)manager;
- (void)manager:(Manager *)manager foundNewData:(id)data;
- (void)manager:(Manager *)manager didReceiveDuplicateData:(id)data;
以下是Apple文档授权的一些信息:https://developer.apple.com/library/ios/documentation/general/conceptual/DevPedia-CocoaCore/Delegation.html
答案 1 :(得分:0)
发布通知。
在你想要更改的UILabel的ViewController中,在viewDidLoad中,执行以下操作:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateLabel) name:@"ManagerUpdated" object:nil];
然后在您的经理课程中,只要您想要更新标签:
[[NSNotificationCenter defaultCenter] postNotification:@"ManagerUpdated" object:nil];
您可以将数据与对象:参数一起发送,而不是为零,它可以是您想要的任何内容。