При добавлении SPView в существующий проект iOS отображается розовый экран (Sparrow Framework)
Я пытаюсь добавить некоторые эффекты частиц в свое приложение для iPhone. Мой проект создан с использованием традиционного UIKit. Я не использую шаблон AppScaffold, поэтому мне нужно добавить и настроить воробья вручную. я сделал #import "Sparrow.h"
и он построен просто отлично.
Проблема в том, когда я пытался добавить SPView. Это просто показывает пустой розовый вид. Я не знаю, что я сделал не так. Вот мой фрагмент кода:
Game.h
@implementation Game
- (id)initWithWidth:(float)width height:(float)height
{
if (self = [super initWithWidth:width height:height])
{
SPQuad *quad = [SPQuad quadWithWidth:100 height:100];
quad.color = 0xff0000;
quad.x = 50;
quad.y = 50;
[self addChild:quad];
}
return self;
}
@end
В viewDidload viewController...
- (void)viewDidLoad {
[super viewDidLoad];
// sparrow
SP_CREATE_POOL(pool);
[SPStage setSupportHighResolutions:YES];
SPView *spv = [[SPView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:spv];
[spv release];
spv.frameRate = 30;
Game *game = [[Game alloc] init];
spv.stage = game;
[game release];
[spv start];
SP_RELEASE_POOL(pool);
}
Дополнительные странные симптомы состоят в том, что я создал UIView в файле.xib и изменил его класс на SPView. Но когда я использую это представление, компилятор все равно распознает его как UIView. Это похоже на то, что xCode может видеть заголовочный файл, а компилятор как-то не видит. Другая проблема заключается в том, что я пытался использовать метод 'SPImage *background = [SPImage imageWithContentsOfFile:@"camera_test.png"];', но когда я его запускаю, он выдает эту ошибку reason: '+[NSBundle appBundle]: unrecognized selector sent to class 0x7a6890'.
Это означает, что он не может найти метод категории воробья appBundle. Но этот метод существует в исходном коде! и скомпилировать без проблем. Это просто сбой во время выполнения.
Я дважды проверил настройки сборки и думаю, что у меня все настроено правильно, например "Другие флаги компоновщика", как -ObjC -load_all
, Я понятия не имею, в чем проблема.
1 ответ
Я нашел решение. В "Build Settings" цели, я должен установить -ObjC -all_load
в "Другие флаги компоновщика" для столбцов ОБА Цель и Проект. Настройка для столбца Target была выбрана, поэтому я думаю, что ничего нет, но на самом деле в ней есть значение!. Я потратил день на просмотр каждой опции настроек сборки в проекте Sparrow 'AppScaffold' и обнаружил это непреднамеренно. Это очень сложно. Четное -ObjC -all_load
установлен в Project, но не в Target, проект по-прежнему собирается просто отлично, но он не будет работать или даже зависать во время выполнения.
"Другие флаги компоновщика", когда они НЕ выделены.
"Другие флаги компоновщика" при выделении. Тьфу! В столбце target (AggScaffold) есть что-то!
Я предлагаю персоналу Sparrow Framework включить эту информацию в свое руководство. Отсутствие даже такой мелкой детали может привести к тому, что кто-то целый день ее исправит.
Надеюсь это поможет.
PS. Ссылка на мой вопрос в форуме воробья: http://forum.sparrow-framework.org/topic/adding-spview-to-a-uiview