2012-06-21 2 views
0

Что я хотел бы сделать, это простая кнопка с методом действий. Эта кнопка инициализируется, создается, назначается ее методу действий и отображается ТОЛЬКО в режимах Debug и AdHoc , Так как разработчик или тестер, я могу видеть кнопку, но в релизе клиент не сможет увидеть эту кнопку.Как выполнить определенную функцию только в режимах DEBUG и AdHoc

Что я сделал до сих пор является следующее:

-В моих project-->Build Settings Tab, я установить значение отладки 1 в оба отладке и Adhoc, как это:

enter image description here

-Тогда Я открыл файл prefix.pch, и там я заблокирован, и я не знаю, что делать.

В принципе, мой метод действия что-то вроде этого:

UIButton btnSwitch=[[UIButton alloc]init]; 

//Etc... 

Приведенный выше код должен быть вызван в определенном файле (класс UIViewController, который должен содержать кнопку).

Как я могу это сделать, я имею в виду, как я могу сказать моему приложению, чтобы выполнить этот код в определенном файле только в режимах DEBUG и Adhoc.

Thanx заранее.

+0

Эта ссылка может помочь вам. http://stackoverflow.com/questions/7252176/ios-detect-ad-hoc-from-code – looyao

ответ

9

Я не уверен, что вы думаете относительно файла prefix.pch. Оставь это в покое.

Вы можете создать кнопку в коде внутри вашего контроллера представления и сделать это условно так.

#ifdef DEBUG 
    UIImage *buttonImage = [UIImage imageNamed:@"btnSwitchImage"]; 

    btnSwitch = [UIButton buttonWithType:UIButtonTypeCustom]; 
    //frame size given as a point of reference only but when you create a button this 
    //way you have to set the frame otherwise you will see nothing. 
    btnSwitch.frame = CGRectMake(0.0f, 0.0f, buttonImage.size.width, buttonImage.size.height); 
    [btnSwitch setBackgroundImage:buttonImage forState:UIControlStateNormal]; 

    [btnSwitch addTarget:self action:@selector(buttonAction:)forControlEvents:UIControlEventTouchUpInside]; 

    [self.view addSubview:btnSwitch]; 
#endif 
5

Вы можете обернуть код вверх в охранниках:

#ifdef DEBUG 
    // Code here to only run when DEBUG is defined 
#else 
    // Code here to run only when DEBUG is not defined 
#endif 

// code here to execute regardless of the state of DEBUG 

Кроме того - если вы используете Xcode 4 вам не нужно определить отлаживать себя, это делается для вас. Вы можете контролировать, следует ли смотреть на схему.

По умолчанию схема Xcode построена на основе конфигурации Debug, которая устанавливает флаг отладки. Если вы хотите создать схему AdHoc, которая устанавливает этот флаг сборки, добавьте конфигурацию AdHoc на основе конфигурации Debug, а затем создайте схему, основанную на этом.

+0

Thanx для вашего ответа, я проверю ваше решение и вернусь к вам :) – Malloc

+0

Привет, работает ли это решение для Режим «Adhoc» также? если нет, то какую директиву я должен упомянуть? Thanx :) – Malloc

+0

Как я уже сказал - создайте новую конфигурацию под названием AdHoc на основе конфигурации Debug, а затем создайте на ней новую схему. – Abizern