#import "Person.h"
//全局的静态变量,要创建的单例类型的
static Person *person;
@implementation Person
//快速创建方式
+ (id)person{
if (person == nil) {
/**
* dispatch_once的作用正如其名,对于某个任务执行一次,并且只执行一次。有两个参数,第一个onceToken用来保证只执行一次,第二个参数block里的要执行的任务
dispatch_once在多线程程序用被广泛应用,可靠简单
*/
static dispatch_once_t once;
dispatch_once(&once, ^{
person = [super alloc];
person = [person init];
});
}
return person;
}
//调用alloc方法就会调用该方法
+ (id)allocWithZone:(struct _NSZone *)zone{
static dispatch_once_t once;
dispatch_once(&once, ^{
person = [super allocWithZone:zone];
});
return person;
//全局的静态变量,要创建的单例类型的
static Person *person;
@implementation Person
//快速创建方式
+ (id)person{
if (person == nil) {
/**
* dispatch_once的作用正如其名,对于某个任务执行一次,并且只执行一次。有两个参数,第一个onceToken用来保证只执行一次,第二个参数block里的要执行的任务
dispatch_once在多线程程序用被广泛应用,可靠简单
*/
static dispatch_once_t once;
dispatch_once(&once, ^{
person = [super alloc];
person = [person init];
});
}
return person;
}
//调用alloc方法就会调用该方法
+ (id)allocWithZone:(struct _NSZone *)zone{
static dispatch_once_t once;
dispatch_once(&once, ^{
person = [super allocWithZone:zone];
});
return person;
}
//打印信息地址相同
#import "ViewController.h"
#import "Person.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
Person *per = [Person person];
NSLog(@"%@", per);
Person *person1 = [[Person alloc] init];
NSLog(@"%@", person1);
}
323

被折叠的 条评论
为什么被折叠?



