如何将现有 iOS 代码包装到新的 Appcelerator 模块中?
How to wrap existing iOS code in a new Appcelerator module?
这似乎是一个基本的要求,但我无法在任何地方找到答案。我想将我编写的一些现有 iOS 代码包装在 Appcelerator 模块中。而已。要点:
- 我没有包装预先存在的第 3 方 iOS SDK。
- 我写了 iOS 被包装的代码。
- 代码经验证可在 xcode 内运行。
- 没有.a文件。不过有 2x .h 文件和 2x .m 文件。
- iOS 代码中没有 UI 元素,因为它仅用于将本机蓝牙硬件连接到应用程序。
- 我创建了一个通用的 appcelerator iOS 模块项目,构建了它,并在我的应用程序中成功调用了通用 ID 函数。
- 我不知道如何成功编辑通用模块以便它使用我的代码。每次尝试都会导致它拒绝编译,这令人抓狂。
- 我无法使用 Hyperloop。
一旦我可以成功构建包装模块,我将调用一个初始化函数来触发本机蓝牙硬件搜索。连接后,模块内有一些功能可以向硬件发送命令并接收回数据。这是我到目前为止所遵循的官方文档:
http://docs.appcelerator.com/platform/latest/#!/guide/iOS_Module_Quick_Start
这帮助我构建了空白模块,将其包含在应用程序中,并通过调用内置测试确保其正常工作 属性。从那里开始,它并没有真正告诉我我需要知道什么。这些是我迄今为止发现的最接近的东西,但仍然不是我需要的东西:
- http://docs.appcelerator.com/platform/latest/#!/guide/iOS_Module_Project-section-43288810_iOSModuleProject-AddaThird-PartyFramework
- appcelerator module for existing ios project sdk
哎呀,我什至不知道我是否可以在工作室中执行此操作,或者我是否必须在 Xcode 中编辑通用模块。帮助! :) 非常感谢。
所以首先,这不是最佳实践,并且当 SDK 更改并且您的模块仍然依赖过时的核心 API 时,将来可能会导致问题。
关于您的问题,您可以创建一个新组件来替代 class 现有的 class,例如
class TiMyModuleListViewProxy : TiUiListViewProxy {
}
并用
调用它
var myList = MyModule.createListView();
或者您编写一个类别以使用您自己的逻辑扩展现有 API,例如
@interface TiUIListViewProxy (MyListView)
- (void)setSomethingElse:(id)value;
@end
@implementation TiUIListViewProxy (MyListView)
- (void)setSomethingElse:(id)value
{
// Set the value of "somethingElse" now
}
@end
我更喜欢第二个选项,因为它匹配更好的 Objective-C 代码风格,但仍请注意可能影响您在功能中的实现的可能的核心更改。谢谢!
这似乎是一个基本的要求,但我无法在任何地方找到答案。我想将我编写的一些现有 iOS 代码包装在 Appcelerator 模块中。而已。要点:
- 我没有包装预先存在的第 3 方 iOS SDK。
- 我写了 iOS 被包装的代码。
- 代码经验证可在 xcode 内运行。
- 没有.a文件。不过有 2x .h 文件和 2x .m 文件。
- iOS 代码中没有 UI 元素,因为它仅用于将本机蓝牙硬件连接到应用程序。
- 我创建了一个通用的 appcelerator iOS 模块项目,构建了它,并在我的应用程序中成功调用了通用 ID 函数。
- 我不知道如何成功编辑通用模块以便它使用我的代码。每次尝试都会导致它拒绝编译,这令人抓狂。
- 我无法使用 Hyperloop。
一旦我可以成功构建包装模块,我将调用一个初始化函数来触发本机蓝牙硬件搜索。连接后,模块内有一些功能可以向硬件发送命令并接收回数据。这是我到目前为止所遵循的官方文档:
http://docs.appcelerator.com/platform/latest/#!/guide/iOS_Module_Quick_Start
这帮助我构建了空白模块,将其包含在应用程序中,并通过调用内置测试确保其正常工作 属性。从那里开始,它并没有真正告诉我我需要知道什么。这些是我迄今为止发现的最接近的东西,但仍然不是我需要的东西:
- http://docs.appcelerator.com/platform/latest/#!/guide/iOS_Module_Project-section-43288810_iOSModuleProject-AddaThird-PartyFramework
- appcelerator module for existing ios project sdk
哎呀,我什至不知道我是否可以在工作室中执行此操作,或者我是否必须在 Xcode 中编辑通用模块。帮助! :) 非常感谢。
所以首先,这不是最佳实践,并且当 SDK 更改并且您的模块仍然依赖过时的核心 API 时,将来可能会导致问题。
关于您的问题,您可以创建一个新组件来替代 class 现有的 class,例如
class TiMyModuleListViewProxy : TiUiListViewProxy {
}
并用
调用它var myList = MyModule.createListView();
或者您编写一个类别以使用您自己的逻辑扩展现有 API,例如
@interface TiUIListViewProxy (MyListView)
- (void)setSomethingElse:(id)value;
@end
@implementation TiUIListViewProxy (MyListView)
- (void)setSomethingElse:(id)value
{
// Set the value of "somethingElse" now
}
@end
我更喜欢第二个选项,因为它匹配更好的 Objective-C 代码风格,但仍请注意可能影响您在功能中的实现的可能的核心更改。谢谢!