欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

iOS App開發(fā)中使用設(shè)計模式中的單例模式的實例解析

 更新時間:2016年05月11日 12:03:31   作者:琿少  
單例模式是最簡單和基本的一種設(shè)計模式,下面我們就簡單解讀一下iOS中單例設(shè)計模式的用法,示例代碼還是為傳統(tǒng)的Objective-C,主要為了體現(xiàn)單例模式的思想,需要的朋友可以參考下

一、單例的作用
顧名思義,單例,即是在整個項目中,這個類的對象只能被初始化一次。它的這種特性,可以廣泛應(yīng)用于某些需要全局共享的資源中,比如管理類,引擎類,也可以通過單例來實現(xiàn)傳值。UIApplication、NSUserDefaults等都是IOS中的系統(tǒng)單例。

二、單例模式的兩種寫法
1,常用寫法

#import "LGManagerCenter.h"

static LGManagerCenter *managerCenter;

@implementation LGManagerCenter

+(LGManagerCenter *)sharedManager{
  if(!managerCenter)
    managerCenter=[[self allocWithZone:NULL] init];
  return managerCenter;
}

@end

2,用GCD創(chuàng)建單例類

#import "LGManagerCenter.h"


@implementation LGManagerCenter


+(LGManagerCenter *)sharedManager{
  static dispatch_once_t predicate;
  static LGManagerCenter * managerCenter;
  dispatch_once(&predicate, ^{
    managerCenter=[[LGManagerCenter alloc] init];
  });
  return managerCenter;
}

@end

其中dispatch_once函數(shù)只執(zhí)行一次。

三、代碼的優(yōu)化
通過上面的方法,我們已經(jīng)可以使用類方法來得到這個單例,但很多時候,項目的工程量很大,還有可能會很多開發(fā)者同時參與一個項目的開發(fā),為了安全與管理代碼的方便,也為了給不是這個單例的創(chuàng)作者但會用到這個單例的開發(fā)人員一些提示,我們通常會重寫一些方法:

首先我們自己實現(xiàn)一個alloc方法:

+(instancetype)myAlloc{
  return [super allocWithZone:nil];
}

將我們的單例實現(xiàn)方法略作修改:

+(ZYHPayManager *)sharedMamager{
  static ZYHPayManager * manager;
  if (manager==nil) {
    manager=[[ZYHPayManager myAlloc]init];
  }
  return manager;
}

將一些視圖實例化對象的方法重寫:

+(instancetype)alloc{
  NSAssert(0, @"這是一個單例對象,請使用+(ZYHPayManager *)sharedMamager方法");
  return nil;
}
+(instancetype)allocWithZone:(struct _NSZone *)zone{
  return [self alloc];
}
-(id)copy{
  NSLog(@"這是一個單例對象,copy將不起任何作用");
  return self;
}
+(instancetype)new{
  return [self alloc];
}

注意:這里的alloc使用了斷言,讓任何視圖通過alloc創(chuàng)建對象的程序段斷在此處,給程序員提示。copy方法這里只是簡單的返回了原對象,并未做任何處理,打印信息給程序員提示。

相關(guān)文章

  • iOS實現(xiàn)簡易鐘表

    iOS實現(xiàn)簡易鐘表

    這篇文章主要為大家詳細(xì)介紹了iOS實現(xiàn)簡易鐘表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • ios 11和iphone x的相關(guān)適配問題及解決方法

    ios 11和iphone x的相關(guān)適配問題及解決方法

    這篇文章主要介紹了ios 11和iphone x的相關(guān)適配,文中給大家提到了在ios 11中,tableView會莫名偏移問題的解決方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-11-11
  • iOS 和 Android 哪個更利于賺錢?

    iOS 和 Android 哪個更利于賺錢?

    iOS 和 Android 哪個更利于賺錢?這篇文章為大家揭曉答案,感興趣的小伙伴們可以參考一下
    2016-09-09
  • iOS中的UIStepper數(shù)值加減器用法指南

    iOS中的UIStepper數(shù)值加減器用法指南

    UIStepper可以有許多應(yīng)用場景,比如在購物應(yīng)用中制作按鈕對購買商品的數(shù)量進(jìn)行增或減,下面我們就一起來看看iOS中的UIStepper數(shù)值加減器用法指南
    2016-05-05
  • 查看iOS已上架App的Crash信息定位、應(yīng)對處理方式的實例

    查看iOS已上架App的Crash信息定位、應(yīng)對處理方式的實例

    下面小編就為大家?guī)硪黄榭磇OS已上架App的Crash信息定位、應(yīng)對處理方式的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • iOS實現(xiàn)選項卡效果的方法

    iOS實現(xiàn)選項卡效果的方法

    選項卡在我們?nèi)粘i_發(fā)的時候經(jīng)常要用到,所以這篇文章給大家分享一種iOS實現(xiàn)的簡單選項卡效果,很適合大家學(xué)習(xí)和使用,有需要的可以參考借鑒,下面來一起看看吧。
    2016-09-09
  • iOS實現(xiàn)知乎和途家導(dǎo)航欄漸變的文字動畫效果

    iOS實現(xiàn)知乎和途家導(dǎo)航欄漸變的文字動畫效果

    這篇文章給大家分享了利用iOS實現(xiàn)知乎和途家導(dǎo)航欄漸變的文字動畫效果,有需要的朋友們可以參考借鑒。下面來一起看看。
    2016-09-09
  • iOS中的NSURLCache數(shù)據(jù)緩存類用法解析

    iOS中的NSURLCache數(shù)據(jù)緩存類用法解析

    iOS App中具體緩存操作的管理我們通常是用NSURLCache類來實現(xiàn)的,下面我們就來看一下iOS中的NSURLCache數(shù)據(jù)緩存類用法解析:
    2016-06-06
  • 基于UIControl控件實現(xiàn)ios點贊功能

    基于UIControl控件實現(xiàn)ios點贊功能

    在開發(fā)當(dāng)中,可能很多時候都需要做個點贊的需求,如果用按鈕實現(xiàn),按鈕作為一個系統(tǒng)復(fù)合控件,外部是一個 View--》UIControl的容器,本文給大家分享一個基于UIControl控件實現(xiàn)ios點贊功能,需要的朋友可以參考下
    2015-09-09
  • iOS 中根據(jù)屏幕寬度自適應(yīng)分布按鈕的實例代碼

    iOS 中根據(jù)屏幕寬度自適應(yīng)分布按鈕的實例代碼

    這篇文章主要介紹了iOS 中根據(jù)屏幕寬度自適應(yīng)分布按鈕的實例代碼,本文給大家分享兩種方式,代碼簡單易懂,需要的朋友可以參考下
    2016-11-11

最新評論