你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> iOS下單例模式實現(二)利用宏定義快速實現

iOS下單例模式實現(二)利用宏定義快速實現

編輯:關於IOS

在上一節裡提到了用利用gcd快速實現單例模式。

  一個項目裡面可能有好幾個類都需要實現單例模式。為了更高效的編碼,可以利用c語言中宏定義來實現。   新建一個Singleton.h的頭文件。   復制代碼 // @interface #define singleton_interface(className) / + (className *)shared##className;     // @implementation #define singleton_implementation(className) / static className *_instance; / + (id)allocWithZone:(NSZone *)zone / { /     static dispatch_once_t onceToken; /     dispatch_once(&onceToken, ^{ /         _instance = [super allocWithZone:zone]; /     }); /     return _instance; / } / + (className *)shared##className / { /     static dispatch_once_t onceToken; /     dispatch_once(&onceToken, ^{ /         _instance = [[self alloc] init]; /     }); /     return _instance; / } 復制代碼     這裡假設了實例的分享方法叫 shared"ClassName".   因為方法名 shared"ClassName"是連在一起的,為了讓宏能夠正確替換掉簽名中的“ClassName”需要在前面加上 ##   當宏的定義超過一行時,在末尾加上“/”表示下一行也在宏定義范圍內。   注意最後一行不需要加"/”。       下面就說明下在代碼中如何調用:   這個是在類的聲明裡:   復制代碼 #import "Singleton.h"   @interface SoundTool : NSObject   // 公共的訪問單例對象的方法 singleton_interface(SoundTool)   @end 復制代碼 這個是在類的實現文件中:   類在初始化時需要做的操作可在 init 方法中實現。   復制代碼 @implementation SoundTool   singleton_implementation(SoundTool)   - (id)init {   }   @end
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved