试图理解objective-c中多变量的单例概念

试图理解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

我试图理解objective-c中的单例概念

我发现的大多数例子只涉及一个变量

我有点不知道如何调整示例来处理许多变量,例如返回x,y,z的加速度计值

您能给我进一步的指导吗?

单例是指在应用程序的生命周期内只能存在一次的特殊对象。该对象可以根据需要具有任意多的变量和属性

//  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编程的教程:它会有所帮助。很高兴我能帮忙:快乐编码。