如果我对您的问题的理解正确,一个选项是Singleton Design Pattern
在这里查看详细信息。
因此,使用单例,您将设置一个全局实例,然后在需要时调用它。
右键单击您的代码并添加一个 Objective-c 类名称为 SingletonClass,使其成为 NSObject 的子类
下面的示例是integer
根据需要将其更改为 astring
或任何类型,
在你的 SingletonClass.h n 你的 SingletonClass.h
#import <Foundation/Foundation.h>
@interface SingletonClass : NSObject
@property int thisIsCounter;
+ (SingletonClass *)sharedInstance;
@end
在你的 SingletonClass.m
#import "SingletonClass.h"
@implementation SingletonClass
@synthesize thisIsCounter=_thisIsCounter;
+ (SingletonClass *)sharedInstance
{
static SingletonClass *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[SingletonClass alloc] init];
// Do any other initialisation stuff here
});
return sharedInstance;
}
- (id)init {
if (self = [super init]) {
// set a singleton managed object , variable in your case
_thisIsCounter=self.thisIsCounter;
}
return self;
}
@end
并在你的情况下将你的单例类导入你想要的类中它的所有类
#import "SingletonClass.h"
//in your app delegate when you fetch data increase singleton variable or decrease it if you want , basically you have a global variable that you can use in your all classes
-(IBAction)plus
{
SingletonClass *sharedInstance = [SingletonClass sharedInstance];
sharedInstance.thisIsCounter =sharedInstance.thisIsCounter + 1;
}
代码未经测试,根据需要对其进行改进。
//现在看着我!!!!!
上面将设置您的全局实例,现在每秒在您的视图控制器中调用它(这很棘手,因为您可能需要使用主线程并且它会受到 UI 事件的干扰)您需要:
如何在 iOS 上定期更新标签(每秒)?
UILabel 文本未更新
- (void)viewDidLoad
{
[super viewDidLoad];
NSTimer* timer = [NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateLabel) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
}
-(void) updateLabel
{
SingletonClass *sharedInstance = [SingletonClass sharedInstance];
self.button.text= sharedInstance.thisIsCounter;
}