При добавлении 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

Другие вопросы по тегам