您的位置:首页 > 其它

单例模式...(ARC方式)

2016-01-01 21:35 232 查看
main.m

#import <Foundation/Foundation.h>

#import "Person.h"

int main(int argc, const char * argv[])
{

Person * person1 = [Person sharedManager];

Person * person2 = [Person sharedManager];

NSLog(@"%p", person1);

NSLog(@"%p", person2);

return 0;
}


Person.h

#import <Foundation/Foundation.h>

@interface Person : NSObject

@property (nonatomic, copy) NSString * name;

+ (Person *)sharedManager;

@end


Person.m

#import "Person.h"

@implementation Person
//这句不能掉

static Person * person = nil;

+ (Person *)sharedManager
{
//单例需要使用dispatch_once_t线程

//这和dispatch_once配合使用能保证该第二个参数代码块中的代码只被执行一次

//如果被执行过不执行直接返回静态变量person,未执行过静态变量person=nil自然需要开辟空间并初始化

static dispatch_once_t once;

dispatch_once(&once, ^{

person = [[self alloc] init];

});

return person;
}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: