通讯录——单例

    //什么是单例?
    //单例就是单个实例对象,保证对象不管创建多少次,都是唯一一个
    //UIScreen UIDevice NSFileManager NSUserDefaults
    /*
            系统单例类:
     [UIScreen mainScreen]
     [UIdevice currentDevice]
     [NSFileManage defaultManager]
     [NSUserDefaults standardUserDefaults]
     */
#pragma mark ——————————单例类的使用意义——————————
将第一个页面的值传到第三个页面,将后面的值传到前面

#pragma mark ——————————单例类的创建——————————
@interface Handler : NSObject
//单例方法是类方法,返回值类型为instancetype
//自己定义的单例类,方法名通常都以share开头
@property (nonatomic, copy)NSString *string;
+ (instancetype)shareInstance;
@end
                             
               
static Handler *handler = nil;
@implementation Handler
//怎么保证单例对象是唯一的
+ (instancetype)shareInstance{
    @synchronized(self){//self这个对象是任意对象,加锁,保证创建过程在同一时间内只允许一个线程对象访问
        if (handler == nil) {
            //单例不能释放,否则不能保证唯一
            //且,多线程下,可能会被创建多次
            handler = [[Handler alloc] init];
        }
    }
    return handler;
}
@end

#pragma mark ——————————单例的使用——————————
- (void)click{
    //创建单例
    Handler *handlder = [Handler shareInstance];
    handlder.string = _textFiled.text;
    
    SecondViewController *second = [ [SecondViewController alloc] init];
    [self.navigationController pushViewController:second animated:YES];    
    [second release];
}
    //创建单例
    Handler *handlder = [Handler shareInstance];
    label.text  = handlder.string;
原文地址:https://www.cnblogs.com/chongyu/p/5209418.html