A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


  
  写一个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;

}



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马