写一个Person类,要保证无论什么情况下创建Person对象返回的都是同一个对象
1) .h文件中
#import <Foundation/Foundation.h>
@interface Person : NSObject +(Person *)shareddManager; @property(nonatomic,retain)NSString *name;
@end 2) .m文件中
#import "Person.h"
@implementation Person static Person *person=nil; +(Person *)shareddManager
{ //单例需要使用dispatch_once_t线程 //这和dispatch_once配合使用能保证该第二个参数代码块中的代码只被执行一次 //如果被执行过不执行直接返回静态变量person,未执行过静态变量person=nil自然需要开辟空间并初始化 static dispatch_once_t once; dispatch_once(&once,^{ person =[[self alloc]init]; }); return person;
} @end
3)main.m函数中 #import <Foundation/Foundation.h> #import"Person.h" int main(int argc, const char * argv[]) { @autoreleasepool { Person *person1=[Person shareddManager]; Person *person2=[Person shareddManager]; NSLog(@"%p",person1); NSLog(@"%p",person2); } return 0;
}
|