#objective-c #xcode #c-preprocessor
#objective-c #xcode #c-препроцессор
Вопрос:
Вероятно, это долгий путь, но спросить не помешает…
Как вы думаете, возможно ли получить IP-адрес узла сборки при сборке для iOS в Objective-C под xcode?
Это было бы полезно для моего тестирования, если бы это было возможно.
Например:
NSString* backendUrl = [NSString stringWithFormat:@"http://%@:5000/", HOST_IP];
Где я ожидал HOST_IP
бы (если бы было что-то подобное), чтобы быть чем-то вроде этого, но, конечно, автоматически контролируется во время сборки для хранения правильного IP:
#define HOST_IP @"172.76.77.5"
Ответ №1:
Нет удобного решения, но вот несколько вариантов для рассмотрения.
- В вашем #define введите имя хоста вашего компьютера (если он находится в локальной сети) — http://mylaptop:5000 / или просто зарегистрируйтесь на бесплатный домен @ http://www.no-ip.com /
- Если необходимо специально иметь макрос #define, содержащий ваш IP-адрес, вы можете просто написать небольшой скрипт bash, который обновляет определенный IP-адрес в вашем файле .m / .cpp / .h или что-то еще, содержащее этот #define . затем вы можете добавить скрипт в качестве этапа предварительной сборки или просто запустить скрипт, когда узнаете, что IP-адрес изменился. хотя я признаю, что это своего рода хакерство.
Комментарии:
1. Ваш номер 2 был бы моим решением. Немного хакерский, но не совсем плохой.
Ответ №2:
Не уверен, работает ли это, но, возможно, вы могли бы сделать что-то вроде
статическая строка NSString *HOST_IP; -(id) инициализация { if (self = [super init]) { HOST_IP = // Ваш код } возвращает self; }
Что-то подобное может сработать, но я не уверен, что произойдет, когда вы освободите класс.
Комментарии:
1. извините, это не сработает. ваш метод сохранит IP-адрес, если устройство, на котором оно запущено. однако я запрашивал IP-адрес сервера сборки (который также является моим серверным сервером отладки)