Bir*_*ngz 6 objective-c iphone-sdk-3.0 ios4
嘿伙计们,我想问,什么是shareInstance实际上?我的意思是什么用法?
目前我在2个不同文件之间进行通信时遇到了一些问题.
这是我的问题:我有1个文件调用Ah/Am和另一个文件调用Bh/Bm啊需要访问Bh中的一些数据,所以....有没有可能的方法我可以实现我想要的?只是想知道它是"SharedInstance"能够解决我的问题吗?
寻找回复:)
Lep*_*ron 10
sharedInstance可用于多种方式.
例如,您可以从静态上下文访问对象.实际上它用于支持Singleton模式的大多数方法.这意味着只需要在整个程序代码中使用该类的一个对象,只需要一个实例.
界面可以如下所示:
@interface ARViewController
{
}
@property (nonatomic, retain) NSString *ARName;
+ (ARViewController *) sharedInstance;
Run Code Online (Sandbox Code Playgroud)
实现ARViewController:
@implementation ARViewController
static id _instance
@synthesize ARName;
...
- (id) init
{
if (_instance == nil)
{
_instance = [[super allocWithZone:nil] init];
}
return _instance;
}
+ (ARViewController *) sharedInstance
{
if (!_instance)
{
return [[ARViewController alloc] init];
}
return _instance;
}
Run Code Online (Sandbox Code Playgroud)
要访问它,请在CustomARFunction类中使用以下内容:
#import "ARViewController.h"
@implementation CustomARFunction.m
- (void) yourMethod
{
[ARViewController sharedInstance].ARName = @"New Name";
}
Run Code Online (Sandbox Code Playgroud)
小智 7
共享实例是一个过程,您可以通过该过程在项目中的任何位置访问类的相同实例或对象.这背后的主要思想是每次调用一个方法时返回相同的对象,以便存储在实例中的值/属性可以在应用程序的任何地方使用.
这可以通过以下2个简单过程完成: -
1)使用仅初始化一次的静态变量
@implementation SharedInstanceClass
static SharedInstanceClass *sharedInstance = nil;
+ (id)sharedInstanceMethod
{
@synchronized(self) {
if (sharedInstance == nil) {
sharedInstance = [SharedInstanceClass new];
}
}
return sharedInstance;
}
@end
Run Code Online (Sandbox Code Playgroud)
2)使用GCD: -
+ (id)sharedInstance{
static dispatch_once_t onceToken;
static SharedInstanceClass *sharedInstance = nil;
dispatch_once(&onceToken, ^{
sharedInstance = [SharedInstanceClass new];
});
return sharedInstance;
}
Run Code Online (Sandbox Code Playgroud)
这些必须被称为: -
SharedInstanceClass *instance = [SharedInstanceClass sharedInstance];
Run Code Online (Sandbox Code Playgroud)
因此,每次从函数返回相同的实例,并且将保留设置为属性的值,并且可以在应用程序的任何位置使用.
问候,
| 归档时间: |
|
| 查看次数: |
11060 次 |
| 最近记录: |