试图理解objective-c中多变量的单例概念
我试图理解objective-c中的单例概念 我发现的大多数例子只涉及一个变量 我有点不知道如何调整示例来处理许多变量,例如返回x,y,z的加速度计值 您能给我进一步的指导吗?单例是指在应用程序的生命周期内只能存在一次的特殊对象。该对象可以根据需要具有任意多的变量和属性试图理解objective-c中多变量的单例概念,objective-c,oop,design-patterns,singleton,Objective C,Oop,Design Patterns,Singleton,我试图理解objective-c中的单例概念 我发现的大多数例子只涉及一个变量 我有点不知道如何调整示例来处理许多变量,例如返回x,y,z的加速度计值 您能给我进一步的指导吗?单例是指在应用程序的生命周期内只能存在一次的特殊对象。该对象可以根据需要具有任意多的变量和属性 // Singleton.h @interface Singleton : NSObject @property (readwrite) int propertyA; @property (readwrite) int p
// Singleton.h
@interface Singleton : NSObject
@property (readwrite) int propertyA;
@property (readwrite) int propertyB;
@property (readwrite) int propertyC;
+ (Singleton *)sharedInstance;
@end
单例的关键是它只能创建一次。通常在Objective-C中,我们使用@synchronized指令来确保只创建一次。我们将其放在一个名为sharedInstance的方便类方法中,并返回我们的Singleton。由于Singleton只是一个对象,因此它可以轻松地拥有多个属性、变量和方法
//辛格尔顿
#import "Singleton.h"
@interface Singleton ()
{
int variableA;
int variableB;
int variableC;
}
@end
@implementation Singleton
static Singleton *sharedInstance = nil;
+ (Singleton *)sharedInstance
{
@synchronized(self) {
if (sharedInstance == nil) {
sharedInstance = [[Singleton alloc] init];
}
}
return sharedInstance;
}
+ (id)allocWithZone:(NSZone *)zone {
@synchronized(self) {
if (sharedInstance == nil) {
sharedInstance = [super allocWithZone:zone];
return sharedInstance;
}
}
return nil;
}
- (id)init {
self = [super init];
if (self) {
// Inits
}
return self;
}
@end
这不是创建单例的唯一方法。记住重要的一点是它只能创建一次。因此,在为OSX和iOS(如Dispatch_once)开发时,您可以利用较新的Grand Central Dispatch调用
与单身汉交谈
让我们假设你在别处有另一个物体和单身汉说话。这可以在导入Singleton.h的任何地方完成
单例是指在应用程序的生命周期内只能存在一次的特殊对象。该对象可以根据需要具有任意多的变量和属性
// Singleton.h
@interface Singleton : NSObject
@property (readwrite) int propertyA;
@property (readwrite) int propertyB;
@property (readwrite) int propertyC;
+ (Singleton *)sharedInstance;
@end
单例的关键是它只能创建一次。通常在Objective-C中,我们使用@synchronized指令来确保只创建一次。我们将其放在一个名为sharedInstance的方便类方法中,并返回我们的Singleton。由于Singleton只是一个对象,因此它可以轻松地拥有多个属性、变量和方法
//辛格尔顿
#import "Singleton.h"
@interface Singleton ()
{
int variableA;
int variableB;
int variableC;
}
@end
@implementation Singleton
static Singleton *sharedInstance = nil;
+ (Singleton *)sharedInstance
{
@synchronized(self) {
if (sharedInstance == nil) {
sharedInstance = [[Singleton alloc] init];
}
}
return sharedInstance;
}
+ (id)allocWithZone:(NSZone *)zone {
@synchronized(self) {
if (sharedInstance == nil) {
sharedInstance = [super allocWithZone:zone];
return sharedInstance;
}
}
return nil;
}
- (id)init {
self = [super init];
if (self) {
// Inits
}
return self;
}
@end
这不是创建单例的唯一方法。记住重要的一点是它只能创建一次。因此,在为OSX和iOS(如Dispatch_once)开发时,您可以利用较新的Grand Central Dispatch调用
与单身汉交谈
让我们假设你在别处有另一个物体和单身汉说话。这可以在导入Singleton.h的任何地方完成
我不明白的最后一件事是如何给a、b或c赋值,以及如何从a、b或c中获取值。谢谢,我添加了一些内容,向您展示如何访问属性。变量仅为内部变量,不能在单例之外赋值。我建议查看这篇关于基本Objective-C编程的教程:它会有所帮助。很高兴我能帮上忙:快乐编码。嗨,谢谢。我不懂的最后一件事是如何给a、b或c赋值,以及如何从a、b或c中获取值。谢谢,我添加了一些内容,向您展示如何访问属性。变量仅为内部变量,不能在单例之外赋值。我建议查看这篇关于基本Objective-C编程的教程:它会有所帮助。很高兴我能帮忙:快乐编码。