標籤:c style class blog code java
使用單例模式的類:
UIApplication
UIAccelerometer
NSUserDefaults
NSNotificationCenter
NSFileManager
NSBundle等
Singleton.h
#import <Foundation/Foundation.h>@interface Singleton : NSObject// 始終返回同一個Singleton的指標+ (Singleton *)sharedManager;@property (strong,nonatomic) NSString *singletonData;@end
Singleton.m
#import "Singleton.h"@implementation Singleton@synthesize singletonData = _singletonData;static Singleton *shareManger = nil;/** 該方法採用了GCD(Grand Central Dispatch)技術,這是一種機遇C語言的多線程訪問計數。 dispatch_once函數就是GCD提供的,它的作用是在整個應用程式生命週期中只執行一次代碼塊。 dispatch_once_t是GCD提供的結構體,使用時需要將GCD地址傳給dispatch_once函數。 dispatch_once函數能夠記錄該代碼快是否被調用過。 **/+ (Singleton *)sharedManager{ static dispatch_once_t once; dispatch_once(&once, ^{ shareManger = [[self alloc] init]; }); return shareManger;}@end
SingleAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ [Singleton sharedManager].singletonData = @"Singleton init"; NSBundle *bundle = [NSBundle mainBundle]; NSLog(@"bundle = %@",bundle); return YES;}
SingleViewController.m
- (void)viewDidLoad{ [super viewDidLoad]; NSLog(@"viewDidLoad print : %@",[Singleton sharedManager].singletonData); NSBundle *bundle = [NSBundle mainBundle]; NSLog(@"bundle = %@",bundle);}