Следуя инструкциям на https://nativescript.org / blog / add-objective-c-code-to-a-nativescript-app / Я настраиваю очень простой проект nativescript (с машинописным текстом внизу):

  1. tns создать простое приложение --tsc
  2. платформа tns добавить ios
  3. tns подготовить iOS
  4. запустите сгенерированный проект ios через xcode.

Приложение работает правильно.

Затем я добавил в проект собственный класс obj-c (App_Resources / iOS / src / Stuff .h и .m):

#import <Foundation/Foundation.h>

@interface Stuff: NSObject
+(void)doStuff;
@end
#import "Stuff.h"

@implementation Stuff
+(void)doStuff {
    NSLog(@"I should see this...");
}
@end

И module.modulemap:

module Stuff {
    header "Stuff.h"
    export *
}

Команда tns prapare ios успешно обрабатывает класс.

Когда я пытаюсь добавить объект «Stuff» в исходный текст машинописного текста, я получаю cannot find name Stuff. Как мне заставить работать маршаллинг / метаданные между машинописным текстом и obj-c? Мне нужно запускать какие-то скрипты? добавить импорт? В руководстве об этом ничего не говорится ...

Это то, что я добавил в приложение шаблона по умолчанию nativescript:

onTap() {
        this._counter--;
        this.updateMessage();
        Stuff.doStuff();
    }

И надеялся увидеть текст лога при нажатии на кнопку ...

0
WilliamVH 8 Сен 2020 в 13:26

1 ответ

Лучший ответ

Я нашел способ добавить в проект необходимые файлы .d.ts: генерация-машинописная типизация

Выполните следующее в корне src вашего проекта nativescript:

TNS_TYPESCRIPT_DECLARATIONS_PATH="$(pwd)/typings" tns build ios

Он создает папку типов, содержащую все файлы .d.ts для классов ios, включая класс Stuff, созданный вручную. Код Typescript теперь правильно интерпретируется ... Новые классы obj-c могут быть адресованы в коде TS после того, как они были обработаны строкой выше.

0
WilliamVH 8 Сен 2020 в 11:42