2017-03-24 148 views
0

我正在研究一個框架項目,其中有一些設置。基於這些設置,一些行爲會改變。但是這將由框架用戶決定。對於說我有一個方法框架,像波紋管:將Framework項目的編譯器標誌依賴項添加到主項目中

+ (void)printCompilerFlag { 

if (OC_LOG_ENABLED == 0) 
    NSLog(@"OC_LOG_ENABLED disabled"); 

else 
    NSLog(@"OC_LOG_ENABLED enabled"); 

}

當用戶通過添加OC_LOG_ENABLED標誌添加此框架到他們的項目,他們應該能夠與他們的項目來處理這個= 0或1.

任何建議或手頭教程是非常可觀的。

謝謝。

n.b:抱歉代碼段,宏條件在這裏不起作用。

回答

0

我可以給你根據我的RD一些建議:

我。創建一個Singelton類.Framework項目:一旦你爲框架產生

// ProjectManager.m file: 
     + (instancetype)sharedManager 
    { 
     static ProjectManager *manager = nil; 
     static dispatch_once_t onceToken; 
     dispatch_once(&onceToken, ^{ 
      manager = [ProjectManager new]; 

     }); 
     return manager; 
    } 


    //Singleton function setter: 
    - (void)setOs_log_enabled_status:(BOOL)os_log_enabled_status 
    { 
     _os_log_enabled_status = os_log_enabled_status; 
     if (_os_log_enabled_status == false) 
     { 
      NSLog(@"OC_LOG_ENABLED disabled"); 
     } 
     else 
     { 
      NSLog(@"OC_LOG_ENABLED enabled"); 
     } 

    } 

//Or 

    - (void)printCompilerFlag 
    { 
     if (_os_log_enabled_status == 0) 
     NSLog(@"OC_LOG_ENABLED disabled"); 
     else 
     NSLog(@"OC_LOG_ENABLED enabled"); 
    } 

項目經理的頭文件只能拿到可見。

//ProjectManager.h file 
@interface ProjectManager : NSObject 

+ (instancetype)sharedManager; 

//os_log bool value to handle your requirement 
@property (nonatomic,assign) BOOL os_log_enabled_status; 
//function 
- (void)printCompilerFlag; 

@end 

ii。 確保你已經選擇這個頭文件作爲公共文件:

構建階段 - >標題拖動ProjectManager.h從項目到公共。

iii。演示使用:

//Appdelegate.m file 
    #import <YourFramework/ProjectManager.h> 

    @implementation AppDelegate 

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    //Depends on user status false or true 
    [ProjectManager sharedManager].os_log_enabled_status = false; 
    //or 
    [ProjectManager sharedManager].os_log_enabled_status = true; 

    //After setting BOOL value call this function 
    [ProjectManager sharedManager] printCompilerFlag]; 
    return true; 
    } 

    @end 

希望這會給你一些想法來處理框架類。

+0

謝謝你的時間。其實我不想用任何參數來做這件事。我想通過編譯器標誌來處理,顯然我會導入框架。 – makboney

相關問題