Добавить зависимость флага компилятора для проекта Framework в основной проект
Я работаю над проектом фреймворка, где у меня есть некоторые настройки. В зависимости от этих настроек поведение может измениться. Но это будет решать пользователь фреймворка. Например, у меня есть метод в рамках, как показано ниже:
+ (void)printCompilerFlag {
if (OC_LOG_ENABLED == 0)
NSLog(@"OC_LOG_ENABLED disabled");
else
NSLog(@"OC_LOG_ENABLED enabled");
}
Когда пользователь добавляет этот фреймворк в свой проект, он должен иметь возможность обработать это с помощью своего проекта, добавив флаг OC_LOG_ENABLED=0 или 1.
Любое предложение или учебник под рукой очень заметны.
благодарю вас.
nb: извините за фрагмент кода, условие макроса здесь не работает.
1 ответ
Я могу дать вам несколько советов на основе моего 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");
}
Заголовочный файл менеджера проекта становится видимым только после того, как вы сгенерировали его как Framework.
//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 из Project в Public.
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
Надеюсь, что это даст вам некоторую идею для работы с классами фреймворка.