Добавить зависимость флага компилятора для проекта 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

Надеюсь, что это даст вам некоторую идею для работы с классами фреймворка.

Другие вопросы по тегам