zoukankan      html  css  js  c++  java
  • 通讯录——单例

        //什么是单例?
        //单例就是单个实例对象,保证对象不管创建多少次,都是唯一一个
        //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;
  • 相关阅读:
    升级ios 不能连原本的xcode /xcode不能抓帧/换xcode版本 build fail
    BlackBerry Key2 键盘扩展
    再议C风格变量声明
    怎样去除SVN中的某个版本之前的所有版本
    mysql 常用基础语句
    乱码问题
    sql server
    MySQL查询今天、昨天、上周、近30天、去年等的数据的方法
    java 时间转换
    sql server 日期
  • 原文地址:https://www.cnblogs.com/chongyu/p/5209418.html
Copyright © 2011-2022 走看看