我想要创建一个可用于iPhone和其他平台的便携式库。
我的问题是:
有人知道在iPhone上最好使用Objective-C还是Objective-C++吗?它是否能像Objective-C与C一样与C++配合使用?
原因:Objective-C是C的超集,但Objective-C++不是
C++的超集。
谢谢!
更新:在相同的用例实现中,内存使用情况、速度如何?
更新1:如果有人能提供更多信息,他将受到欢迎。
我想要创建一个可用于iPhone和其他平台的便携式库。
我的问题是:
有人知道在iPhone上最好使用Objective-C还是Objective-C++吗?它是否能像Objective-C与C一样与C++配合使用?
原因:Objective-C是C的超集,但Objective-C++不是
C++的超集。
谢谢!
更新:在相同的用例实现中,内存使用情况、速度如何?
更新1:如果有人能提供更多信息,他将受到欢迎。
我认为你的信息是不正确的。Objective-C++ 是 C++ 的超集。任何 C++ 代码都是合法的 Objective-C++ 代码。此外,你可以在 Objective-C++ 文件中混合 Objective-C 和 C++ 代码(通常使用 .mm 后缀),并且(有一些限制下)在 Objective-C++ 类中混用 Objective-C 和 C++ 的类实例变量。Objective-C++ 特别适用于在 Objective-C 和 C++ 库之间进行接口编程。你可以使用 C++ 编写跨平台库,然后在应用程序中从 Objective-C++ 调用它。详见 Objective-C 语言指南中的 Objective-C++ 章节。
使用 Objective-C++ 的主要缺点是增加了编译时间(Objective-C++ 比 C++ 还要慢,并且 Clang LLVM 编译器还不能很好地处理 Objective-C++)。除了调用的代码有所不同(例如,如果你是更优秀的 C++ 开发人员,则你的 C++ 可能比你的 C 库更高效,反之亦然),Objective-C 和 Objective-C++ 之间没有性能差异。
它们并不是完全不同的语言。Objective-C ++ 只是对包含 C++ 代码的支持略有限制的 Objective-C。Objective-C 是标准方言,但如果需要使用 C++,没有理由不使用它。据我所知,最大的实际区别(除了允许使用不同的库)是 Objective-C++ 编译速度似乎稍慢。如果你决定采用这种方法,请确保先阅读相关资料,因为 C++ 和 Objective-C 的合并不是100%无缝的。
如果您打算在iPhone和Mac OS以外的平台上使用此库,则应使用C ++。如果您计划仅将其移植到Mac OS,则可以使用Objective-C。 Objective-C ++只是一种将现有的C ++代码集成到Objective-C项目中的方法。因此,您不会在其中编写库。但是,您可能会使用Objective-C ++从iPhone或Mac项目中使用此库。
话虽如此,我认为在XCode项目的某个部分编写C或C ++函数/方法并使用它们也没有问题。只是不要期望Objective C在其他平台上表现得像对待自己一样好。Apple和Windows开发IDE是不同的,Microsoft有一个不与其他环境(不仅限于苹果公司)兼容的习惯。
我很高兴听到有人试图为其他项目重复使用他们的代码:)现在太多人忘记创建自己的库,我完全不知道为什么。
希望这可以帮到您。干杯,马修
选择C或C++ - 我不认为在不了解你的目标的情况下推荐其中一种有任何理由。
就内存使用而言,C++和C确实需要更加纪律严明的编码。就速度而言,C和C++几乎在任何情况下都比任何ObjC/ObjC++解决方案更快。我经常将我的Objective C应用程序与C和C++代码混合使用,并且总是对结果感到满意。正如Jonathan所说,ObjectiveC++主要是一个桥梁,用于在您的Objective C应用程序中使用C++代码/库。
您可以自由地在Objective C++中使用C++对象。但是,您无法在C++中使用Objective C/C++对象。因此,这是单向道路。为了克服这种限制所带来的任何限制,只需在需要时使用Objective C++类包装您的C++对象即可。