Как работает #import в автоматизации пользовательского интерфейса iOS?

Я создаю небольшую тестовую среду, которая использует шаблон модуля JavaScript для тестирования автоматизации пользовательского интерфейса на iOS. Однако, похоже, я получаю странные результаты на основе #import и расширяемых модулей.

У меня есть базовый тестовый модуль под названием Tester-Module.js :

(function() {
  var Tester = this.Tester = {};

  Tester.setUp = function() {
    UIALogger.logMessage('Regular SetUp()');
  }
}).call(this);

Если я импортирую этот модуль в свой тестовый пример, он работает нормально. Вот тестовый файл tester.js ( tester.js - это файл, который я импортирую в Instruments):

#import "./Tester-Module.js"

// Prints 'Regular SetUp()'
Tester.setUp();

Однако, если я попытаюсь расширить модуль тестера . js в другом файле модуля, я не могу ссылаться на объект Tester. Tester-Extension.js расширяет модуль Tester, определенный в Tester-Module.js :

#import "./Tester-Module.js"

// Outputs:
// Exception raised while running script:
// ReferenceError: Can't find variable: Tester\n
Tester.setUp = function() {
  UIALogger.logMessage('Overwritten SetUp()');
}

, и обновленный файл тестового примера tester.js :

#import "./Tester-Extension.js"

// Exception is thrown before this
Tester.setUp();

Мои, надеюсь, связанные вопросы:

  • Почему я не могу ссылаться на объект Tester внутри Tester-Extension.js , но могу в tester.js ?

  • Что такое #import macro doing?

7
задан baalexander 23 September 2011 в 16:29
поделиться