Пытаясь понять, как интегрировать код из одной программы в другую, я выгрузил 3 класса в пустой открытый игровой проект GLES. Это классы ContentController, PhoneContentController и MyViewController из примера яблока PageControl.
Затем я взял этот код инициализации из файла делегата приложения PageControl и поместил его в игровой проект appDelegate.
contentController = [[PhoneContentController alloc] init];
[self.window addSubview:contentController.view];
с необходимыми synthetic/protocols/includes и объявлениями там, где они находятся в PageControl.
Я получаю ошибку SIGABRT в этой строке в main:
return UIApplicationMain(argc, argv, nil, NSStringFromClass([IntegrationTestAppDelegate class]));
Я добавил общую точку останова, и она указывает на эту строку в MyViewController.m.
newsItem = [[UITextView alloc] initWithFrame:self.view.frame];
Я предполагаю, что это как-то связано с self.view.frame ....? может быть? Итак, есть ли здесь какая-то проблема с типом иерархии?
РЕДАКТИРОВАТЬ - при дальнейшем осмотре кажется, что это как-то связано с представлениями... хотя я не совсем знаю, что. Может ли это иметь какое-то отношение к чужому файлу nib?
РЕДАКТИРОВАТЬ - более подробно: newsItem вызывается из инициализации myViewController, который вызывается из метода внутри контроллера содержимого телефона, который, в свою очередь, вызывается следующей строкой в appdelegate:
contentController = [[PhoneContentController alloc] init];
if (controller.view.superview == nil)
24.01.2012