zoukankan      html  css  js  c++  java
  • 《从零開始学Swift》学习笔记(Day 63)——Cocoa Touch设计模式及应用之单例模式

    原创文章,欢迎转载。转载请注明:关东升的博客

     

    什么是设计模式。设计模式是在特定场景下对特定问题的解决方式。这些解决方式是经过重复论证和測试总结出来的。

    实际上。除了软件设计,设计模式也被广泛应用于其它领域。比方UI设计和建筑设计等。

    以下来介绍Cocoa Touch框架中的设计模式中的单例模式。

     

    单例模式

    单例模式的作用是解决“应用中仅仅有一个实例”的一类问题。在Cocoa Touch框架中,有UIApplicationNSUserDefaultsNSNotificationCenter等单例类。另外,NSFileManagerNSBundle类尽管属于Cocoa框架的内容。但也能够在Cocoa Touch框架中使用(Cocoa框架中的单例类有NSFileManagerNSWorkspaceNSApplication等)。

     

    问题提出

    在一个应用程序的生命周期中,有时候仅仅须要某个类的一个实例。

    比如:当iOS应用程序启动时。应用的状态由UIApplication类的一个实例维护。这个实例代表了整个“应用程序对象”,它仅仅能是一个实例。其作用是共享应用程序中的一些资源、控制应用程序的訪问,以及保持应用程序的状态等。

     

    解决方式

    单例模式的实现有非常多方案,苹果公司在《UsingSwift with Cocoa and Objective-C》官方文档中给出了一种单例模式的实现。最简单形式代码例如以下:

    class Singleton {
    
        static let sharedInstance = Singleton()
    
    }
    

    上述代码採用static的类属性实现单例模式。这样的类属性仅仅被延迟载入运行一次。即便是在多线程情况下也仅仅是运行一次,而且保证是线程安全的。

    假设须要进行一些初始化,能够使用例如以下带有闭包形式代码:

    class Singleton {
    
        static let sharedInstance: Singleton = {
    
              let instance = Singleton()
    
              // 初始化处理
    
              return instance
    
            }()
    
    }
    

    单例模式除了上述苹果官方给出的实现外,还有非常多种实现方式。

  • 相关阅读:
    SQL SERVER 和EXCEL的数据导入导出
    常用SQL语句
    ASP.NET 中 ContentType 类型
    Centos7 安装MongoDB
    Scrapy:pipeline管道的open_spider、close_spider
    pipreqs(找当前项目依赖的包)
    Docker版本Jenkins的使用
    CentOS安装nginx,部署vue项目
    centos7中安装mysql
    flask框架使用flaskmigrate进行数据库的管理,非常方便!!!
  • 原文地址:https://www.cnblogs.com/llguanli/p/7137558.html
Copyright © 2011-2022 走看看