通讯录——单例

    //什么是单例?
    //单例就是单个实例对象,保证对象不管创建多少次,都是唯一一个
    //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;
时间: 2024-08-05 20:30:32

通讯录——单例的相关文章

UI_12 ModalViewController(模态),单例设计模式

?.模态viewController 1.介绍 程序中切换??,可以使?UINavigationController.通过导航功能实现??切换.使用    pushViewController:animated:该方法显示的视图具有层级关系;而使用模态视图控制器presentViewController:animated:completion显示的视图与之前的视图控制器平级(或者说是两个不相干的层级). 使用场景 临时展??些内容.例如:程序中?户登录,通讯录中添加联系?等等. UIImageP

单例设计模式

一:单例设计模式的定义 单例设计模式,顾名思义,就是在整个程序运行过程中,只向外界提供一个对象,这样做可以避免资源的浪费,例如 我们打开回收站或者ppt时,只会启动一个窗口. 单例模式的java实现: 1:饿汉式 1 /** 2 * 3 */ 4 package com.hlcui.singleton; 5 6 /** 7 * @author Administrator 饿汉式单例类 8 */ 9 public class SingletonDemo { 10 // 1:内部创建一个对象 11

java单例类/

java单例类  一个类只能创建一个实例,那么这个类就是一个单例类 可以重写toString方法 输出想要输出的内容 可以重写equcal来比较想要比较的内容是否相等 对于final修饰的成员变量 一但有了初始值,就不能被重新赋值 static修饰的成员变量可以在静态代码块中 或申明该成员时指定初始值 实例成员可以在非静态代码块中,申明属性,或构造器中指定初始值 final修饰的变量必须要显示初始化 final修饰引用变量不能被重新赋值但是可以改变引用对象的内容分(只要地址值不变) final修

iOS 中的单例设计模式

单例设计模式:在它的核心结构中只包含一个被称为单例类的特殊类.例如文件管理中的NSUserDefault,应用程序中的UIApplication,整个应用程序就这一个单例类,负责应用程序的一些操作,单例在那个文件下都能取得到. 通过单例设计模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节省系统资源.如果希望在系统中某个类的对象只能存在一个,单例模式是最好的选择. 下面来点实在的,创建单例代码上 方法1:基于线程安全创建一个单例 .h做一下声明 + (id)

android里单例对象和某些数据被释放的问题

接触正式的android开发已经有一段时间了,项目的第一个版本终于快完成了.有一次自己在测试的时候,把自己的android项目切到后台,同时打开了几个应用之后重新切回到自己的app,发现报错了.经过排查,发现是自己的单例对象中的数据被释放掉了,也就是int变量的值 变成了0,string变量的值变成了null. 我的单例一开始是这样的(举例); public class UserInfo { private static UserInfo userInfo = null; private int

单例、代理 & 通知

PS:手写单例.代理方法实现 & 通知的简单使用! [ 单例模式,代理设计模式,观察者模式! ] 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. -- GoF “四人帮”<Design Patterns: Elements of Reusable Object-Oriented Software>将设计模式提升到理论高度,并将之规范化.该书提出了23种基本

unity泛型单例

参考自:http://wiki.unity3d.com/index.php/Singleton 我们要使用Unity3d在Object类中提供了一个静态函数 :Object.DontDestroyOnLoad (Object target) . 加载新场景的时候使单例对象不被自动销毁 作为 MonoBehaviour 因为我们可能需要协同程序,所以使用 Lock同步 用法示例 MyClass.cs public class MyClass : MonoBehaviour { void Awake

iOS--Swift开发中的单例设计模式

最近在开发一个小的应用,遇到了一些Objective-c上面常用的单例模式,但是swift上面还是有一定区别的,反复倒来倒去发现不能按常理(正常的oc to swift的方式)出牌,因此搜索了一些帖子.可能是xcode或者sdk的问题吧(我相信他们不会把未经测试的代码展示,吧?...),一些帖子中的代码犯了明显的错误,编译失败.于是有了这篇文章,分享给大家. 原作者实现了一种单例,但是红色代码导致非线程安全: 1 class var sharedInstance:TPScopeManager {

单例写法 转

如何正确地写出单例模式 1.懒汉式,线程不安全 这段代码简单明了,而且使用了懒加载模式,但是却存在致命的问题.当有多个线程并行调用 getInstance() 的时候,就会创建多个实例.也就是说在多线程下不能正常工作 public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == nu