iOS - Как я могу создавать и уничтожать серийные экземпляры UIApplication? - PullRequest
0 голосов
/ 29 декабря 2010

Это может быть мало кому полезно, но можно вернуться из UIApplicationMain, вложив вызов в блок try {} catch (NSException * e) {}. В настоящее время я делаю это для тестирования процесса установки, чтобы запустить некоторую логику после выхода из приложения. Я хотел бы пойти дальше и написать отдельные подклассы UIApplication и запускать их последовательно, но UIApplicationMain не хочет играть хорошо, это одиночка, и он должен помнить, какой он был когда-то (первое приложение UIApplication, которое было создано ). Вот ошибка, которую я получаю, когда пытаюсь создать второе приложение UIA после возврата из первого вызова UIApplicationMain ...

2010-12-28 16:01:36.890 SomeFakeAppName[26993:207] *** Assertion failure in UIApplicationInstantiateSingleton(), /SourceCache/UIKit_Sim/UIKit-1447.6.4/UIApplication.m:1263

Итак, два вопроса:

Я понимаю, что, вероятно, я "делаю это неправильно", но как мне очистить память UIApplication, чтобы он думал, что каждое последующее создание UIApplication является его первым?

Если это тупик, я могу попробовать заменить UIApplicationMain, вручную настроив цикл основного события и создав экземпляр UIApplication. Кто-нибудь делал это?

1 Ответ

2 голосов
/ 29 декабря 2010

Уверен, что вы не можете. UIApplication управляется на уровне операционной системы, и Apple на самом деле не дает вам ключей, чтобы понять, как все это работает.

Если это вообще возможно, вы погрузитесь в частные API (что не должно быть проблемой, потому что мы говорим о не выпущенной установке тестового набора, верно?) Найдите файлы декомпилированных заголовков UIApplication.h, которые находятся в нескольких местах. Ищите частные методы, которые звучат как то, что вы хотите, и попробуйте.

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

...