【问题标题】:Can an iOS static library contain classes/interfaces, that can be used/implemented by iOS code that is using the library?iOS 静态库是否可以包含可由使用该库的 iOS 代码使用/实现的类/接口?
【发布时间】:2012-07-29 19:24:15
【问题描述】:

如果这是一个愚蠢的问题,或者没有意义,我深表歉意。我之前写过一些 Objective-C 代码,但我对 OS X 或 iOS 编写代码不是很熟悉;我几乎是个新手。目前,我正在尝试将一个项目从 OS X 移植到 iOS 中。该项目编译成一个框架,其他 OS X 项目可以使用。

我正在尝试为 iOS 做类似的事情。我了解 iOS 不支持包含 dylibs 的框架,解决方案是创建一个静态库。但是,OS X 框架有几个类(在.m 文件中),实现代码使用、扩展或实现。我看到的所有静态库示例似乎都定义了一个头文件,其中包含一些可以编译成静态库的函数。

是否可以在静态库中包含 iOS 代码可以使用的类?另外,如何判断代码是否使用了动态库?

【问题讨论】:

  • 您的断言并不完全正确。 iOS 确实支持框架,它们只是不能包含dylibs。那里有非常重要的区别。
  • @RichardJ.RossIII 感谢您的澄清!就像我说的,我是新手。如何判断我移植的代码是否使用动态库?

标签: ios macos static-libraries ios-frameworks


【解决方案1】:

是的,静态库可以包含 Objective-C 类。

在某些情况下,您需要将选项传递给链接器以强制它包含静态库中定义的所有类和类别。见http://developer.apple.com/library/mac/#qa/qa1490/_index.html

【讨论】:

  • Richard 对我的问题发表了评论,并说如果项目包含动态库,我将无法转换该项目。我知道该项目使用第三方库。那些被认为是动态库?​​
  • 您将无法在 iOS 上使用任何动态或静态 OS X 库。您将需要这些库的 iOS 版本,如果第三方供应商不提供它们,并且它们的源代码不可用,那么您将无法使用它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-20
  • 2014-02-02
  • 2014-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多