我的单身人士可以改善吗?

时间:2012-07-19 15:40:34

标签: ios ios5 singleton

我对iOS 5单身人士有些陌生,我正在使用这里记录的单身人士:

iOS 5 Singletons

这样的事情:

MyManager.h

#import <Foundation/Foundation.h>
@interface MyManager : NSObject

//Data for section 1
@property(nonatomic,copy) NSString * section1a;
@property(nonatomic, assign) NSUInteger section1b;


//Data for section 2
@property(nonatomic,copy) NSString * section2a;
@property(nonatomic, assign) NSUInteger section2b;

+ (id)sharedInstance;
@end

MyManager.m

@implementation MyManager
@synthesize section1a, section1b, section2a; , section2b;

+ (id)sharedInstance
{
    static dispatch_once_t pred = 0;
    __strong static id _sharedObject = nil;
    dispatch_once(&pred, ^{
        _sharedObject = [[self alloc] init]; // or some other init method
    });
    return _sharedObject;
}
@end

所以我按如下方式使用它:

MyManager * myManager = [MyManager sharedInstance];
myManager.data = self.data

这是你一般如何使用单身人士吗?我错过了什么吗? 对不起,我只是想确保我做得对的基本问题。

由于

4 个答案:

答案 0 :(得分:1)

这不是单例,因为您可以使用alloc / init方法创建此类的多个实例。 正确答案is here

答案 1 :(得分:1)

你做得对。这是(目前:)的方式,并启用ARC,多线程等。

它不是严格意义上的单例,因为你可以分配更多的类实例,但我不认为这与你的情况有关。

答案 2 :(得分:0)

我通常会制作我的单身人士(假设我们为经理制作单身人士):

static (Manager *) instance;

+ (Manager *) getInstance
{
    if(!instance) instance = [[Manager alloc] init];
    return instance;
}

这是一个非常基本的单例(它没有考虑多线程或其他高级功能),但这是基本格式。

答案 3 :(得分:0)

请参阅:Singleton in iOS 5?您应该覆盖allowWithZone以防止恶意代码创建新实例。