2017-03-24 109 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

相关问题