你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> [iOS]APP代碼實踐:建立一個輔助的APP類,減少對AppDelegate的修改

[iOS]APP代碼實踐:建立一個輔助的APP類,減少對AppDelegate的修改

編輯:IOS開發綜合

最開始接觸iOS開發的時候,如果需要一些全局變量或者全局函數的時候,總是直接在AppDelegate中添加,因為AppDelegate可以直接獲取

[UIApplication sharedApplication].delegate

但是時間長了還是覺得這樣不太好,AppDelegate本身有其自己的作用(對於App本身的一些事件進行處理,如啟動,切換,推送),這樣做感覺怪怪的,所以還是自己弄一個專門處理我們所需的全局變亮或者全局函數的對象會更好一些

//APPHelper.h
@interface APPHelper

+ (APPHelper*)call;

- (void) configureWindow:(UIWindow*)window;

@property (nonatomic, readonly) AppDelegate *delegate;
@property (strong, readonly) UIWindow *window;

@end


//APPHelper.m

@interface APPHelper ()


@end


@implementation APPHelper

- (id)init
{
    self = [super init];

    if (self) {
        
        _delegate = (GGAppDelegate*)[UIApplication sharedApplication].delegate;
    }

    return self;
}


+ (APPHelper *)call
{
    static dispatch_once_t  onceQueue;
    static APPHelper *appInstance;

    dispatch_once(&onceQueue, ^{
        appInstance = [[APPHelper alloc] init];
    });
    return appInstance;
}

- (UIWindow *)window
{
    return self.delegate.window;
}



- (void)configureWindow:(UIWindow*)window
{
    
    UINavigationController *nav = [[UINavigationController alloc] init];

    ...
    ...
    ...
    
    window.rootViewController = nav;
    
}

@end

 

然後 在預編譯頭*.pch中加入

#import "AppHelper.h"


#define APP ([APPHelper call])

 

就可以直接在代碼的任意一個地方直接使用此類了,如

//設置APP為圓角
APP.window.layer.cornerRadius = 5.0f;
APP.window.layer.masksToBounds = YES;

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved