`
zcw_java
  • 浏览: 305711 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

OC之单例模式

 
阅读更多

    static MyGizmoClass *sharedGizmoManager = nil;
     
    + (MyGizmoClass*)sharedManager
    {
        @synchronized(self) {
            if (sharedGizmoManager == nil) {
                [[self alloc] init]; // assignment not done here
            }
        }
        return sharedGizmoManager;
    }
     
    + (id)allocWithZone:(NSZone *)zone
    {
        @synchronized(self) {
            if (sharedGizmoManager == nil) {
                sharedGizmoManager = [super allocWithZone:zone];
                return sharedGizmoManager;  // assignment and return on first allocation
            }
        }
        return nil; //on subsequent allocation attempts return nil
    }
     
    - (id)copyWithZone:(NSZone *)zone
    {
        return self;
    }
     
    - (id)retain
    {
        return self;
    }
     
    - (unsigned)retainCount
    {
        return UINT_MAX;  //denotes an object that cannot be released
    }
     
    - (void)release
    {
        //do nothing
    }
     
    - (id)autorelease
    {
        return self;
    }



碰到allocWithZone, copyWithZone总会有个疑问,这个NSZone到底是个什么东西?

简单来说,可以想象成一个内存池,alloc或是dealloc这些操作,都是在这个内存池中操作的。

cocoa总是会配置一个默认的NSZone,任何默认的内存操作都是在这个“zone”上操作的。默认的NSZone的缺陷在于,它是全局范围的,时间一长,必然会导致内存的碎片化,如果你需要大量的alloc一些object,那么性能就会受到一些影响。

所有cocoa提供方法,你可以自己生成一个NSZone,并将alloc, copy全部限制在这个”zone“之内。
分享到:
评论

相关推荐

    OC单例模式讲解

    ### OC单例模式讲解 #### 一、单例模式简介 单例模式是设计模式中的一种,属于创建型模式,其主要目的是确保一个类只有一个实例,并提供一个全局访问点。在Objective-C (简称OC)中,单例模式非常常用,尤其是在...

    iOS OC 单例

    通过文件`OC_SingletonTest`中的示例,我们可以进一步学习如何在实际项目中应用单例模式,例如创建一个网络请求管理器单例,用于统一处理网络请求,这样可以方便地管理和监控网络状态,同时减少代码的重复性。...

    OC宏定义实现单例设计模式

    OC宏定义实现单例设计模式实现文件,如何使用,直接上代码

    OC-单例OC-单例OC-单例OC-单例OC-单例

    **实现OC单例的步骤** 1. **创建一个类**:首先,你需要一个类,这个类将被设计为单例。 2. **私有化初始化方法**:将类的初始化方法声明为私有(`- (instancetype)init;`),防止外部直接实例化。 3. **静态变量...

    单例模式

    在Objective-C(OC)中,单例模式被广泛应用于那些需要在整个应用程序生命周期内共享且只创建一次的对象,比如配置管理、数据库连接或者网络请求管理等。 在Objective-C中实现单例模式通常有两种方法:GCD(Grand ...

    细究单例那些你不知道的事(OC).zip

    在Objective-C(OC)编程中,单例模式被广泛应用于管理共享资源、配置信息或者提供一个全局的入口点。本篇文章将深入探讨单例模式在OC中的实现细节以及一些不为人知的使用技巧。 首先,我们来看一下OC中创建单例的...

    Swift 实现单例 代理 通知 的设计模式 OC 跟 Swift 如何混编

    本篇文章将深入探讨如何在Swift中实现单例、代理和通知这三种常用的设计模式,并讲解如何在Swift与OC之间进行有效的混编,包括创建按钮和实现页面跳转。 首先,我们来看Swift中的单例设计模式。单例是一种确保类...

    iOS单例代码

    - **线程安全**:正确实现的单例模式能保证在多线程环境下安全地访问。 然而,单例也有其缺点: - **过度使用**:滥用单例可能导致代码过于紧密耦合,不易于测试和维护。 - **生命周期固定**:单例对象的生命周期与...

    OC编程之道ios设计模式源码

    1. 单例模式(Singleton):确保一个类只有一个实例,并提供一个全局访问点。在iOS中,单例常用于管理应用程序的全局状态,如网络请求管理者或用户首选项存储。 2. 工厂模式(Factory):提供一个创建对象的接口,...

    iOS单例的创建与销毁示例

    单例模式在很多场景下非常有用,比如管理全局配置、网络请求、数据库访问等,因为这些功能通常需要统一的入口点来协调操作。本文将详细讲解如何在iOS中创建和销毁单例。 首先,我们来看单例的创建。在ARC...

    ios设计模式开发23种设计模式OC编程

    1. **单例模式**:确保一个类只有一个实例,并提供一个全局访问点。在iOS中,常用于管理共享资源,如网络请求管理者、偏好设置管理者等。 2. **工厂模式**:提供一个接口用于创建一系列相关或相互依赖的对象,而...

    swift-使用OC实现常用的23种设计模式

    1. 单例模式(Singleton):确保一个类只有一个实例,并提供全局访问点。在Swift中,可以使用静态属性和闭包来创建线程安全的单例。 2. 工厂模式(Factory):提供一个接口来创建对象,但让子类决定实例化哪一个类...

    swift-十分钟搭建App框架OC

    - 使用单例模式管理共享资源,如网络请求管理者、全局配置等。 10. **国际化和本地化**: - 添加Localizable.strings文件,实现应用的多语言支持。 11. **自动化测试**: - 配置单元测试和UI测试,编写测试用例...

    Objective-C编程之道 iOS设计模式解析

    书中将介绍一系列适用于iOS开发的设计模式,如单例模式、工厂模式、观察者模式、代理模式、装饰器模式、模态视图模式等。这些模式不仅能够提高代码的复用性,还能使代码结构更加清晰,易于维护。 1. **单例模式**:...

    j2ee设计模式源代码

    1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。在J2EE应用中,如数据源管理或线程池,常使用单例模式。 2. **工厂模式**:提供创建对象的接口,但让子类决定实例化哪一个类。在EJB中,容器会根据...

    myProject_OC_firm3u4_DEMO_优化_

    该项目涵盖了多种常用的设计模式,如单例模式、工厂模式、代理模式、观察者模式、MVC(Model-View-Controller)等。这些模式有助于代码结构的清晰,提高代码的复用性和扩展性。开发者可以通过DEMO学习如何在...

    基于OC语言的学生管理系统(实现了增删查改功能)

    7. **设计模式应用**:在大型项目中,可能会用到设计模式,如单例模式用于管理数据库连接,工厂模式用于创建学生对象,或者观察者模式用于实时更新视图。 8. **MVC架构**:在学生管理系统中,模型(Model)是学生...

    OC编程之道.pdf.zip

    苹果公司的App Store拥有超过20万个应用(每秒都在增加)供用户选择,正深刻地改变着...你将掌握单例、抽象工厂、责任链和观察者等经典模式,还会发现一些不太知名但非常有用的模式,比如备忘录、组合、命令和中介者等。

    iOS面试题PPT合集OC实用版本

    7. 设计模式与架构:面试官会评估你对MVC、MVVM、VIPER等设计模式的掌握,以及如何使用单例、工厂、代理、装饰器等模式。同时,了解模块化、组件化、VIPER、MVI等架构模式可以帮助你构建可维护、可扩展的应用。 8. ...

    ios全局蓝牙Demo

    这通常通过单例模式来实现,确保在整个应用中只有一个蓝牙管理对象,保证蓝牙连接的持久性。 3. **单例模式**: 单例模式是一种设计模式,确保一个类只有一个实例,并提供一个全局访问点。在iOS的蓝牙应用中,我们...

Global site tag (gtag.js) - Google Analytics