Невозможно ответить на вопрос «разрешит ли Apple это?». Вы должны выбрать свою терпимость к риску и подать. Лично я держусь подальше от вещей, которые недокументированы. Но в случаях, когда я улучшаю свои программы с вещами на грани (обычно недокументированные вещи, которые на самом деле не являются частными), я стараюсь сделать свою программу устойчивой к изменениям.
Один из основных способов сделать это - проверить, существует ли вещь, которую вы собираетесь связать или какую функцию вы собираетесь звонить. Для методов вы можете использовать -respondsToSelector:
перед вызовом. Для функций, вы можете проверить, существует ли функция:..
extern void SomeFunction() __attribute__((weak_import));
if (SomeFunction != NULL) {
SomeFunction();
}
(Вам нужно будет проверить, что на iPhone, я использую его на Mac, и weak_import
должен быть портативным, так как iPhone использует GCC4 См Ensuring Backward Compatibility Так далеко, я всегда мог найти какой-то трюк, чтобы не на самом деле этого требовать на iPhone.)
Ключом всего этого является то, что ваша программа функционирует без недокументированной функции. Таким образом, даже если Apple откажется от него, вытащить его будет тривиально.
Это говорит о том, что для меня это последнее средство для вещей, которые я потратил много времени, пытаясь сделать документально, для вещей, которые значительно улучшают работу пользователя и не нарушают Apple основное намерение. Например, работа в фоновом режиме, даже если вы можете заставить его работать, является явным нарушением духа правил Apple; другие вещи являются частными только потому, что они не были опубликованы, как внутренние представления элементов пользовательского интерфейса.
Изменение яркости экрана таким образом, который сохраняется за пределами вашего приложения, может показаться нарушением основных правил игры (пребывание в песочнице). Получение текущей яркости экрана не похоже на это (хотя я не уверен, что бы вы сделали с этим.)
Я нахожу, что обе практики сложны. Вы никогда не знаете, как Apple отреагирует. И, как вы уже сказали, реализация может сломаться с новой ОС. – Kriem