代码之家  ›  专栏  ›  技术社区  ›  mxg

iPhone与VC++(Objul-C与ObjaveC++)

  •  15
  • mxg  · 技术社区  · 15 年前

    我想为iPhone创建一个可移植的库,它也可以用于其他平台。

    我的问题是后遗症:

    有人知道在iPhone上使用什么是最好的:Objective-C或Objective-C++?它与C++的Objy-C相同吗?

    原因: objective-c是c的超集,但是objective-c++ is not 一个C++的超集。

    事先谢谢!

    更新: 在相同的用例实现中,内存使用和速度如何?

    更新1: 如果有人能提供更多的信息,我们欢迎他。

    8 回复  |  直到 9 年前
        1
  •  11
  •   Chuck    15 年前

    它们不是真正不同的语言。Objto-C++只是Objy-C,对C++代码的支持稍微有限。Objto-C是标准的方言,但是如果你需要使用C++,没有理由不使用它。在afaik中,最大的实际区别(除了允许使用不同的库之外)是,Objective-C++的编译速度似乎有点慢。如果你决定走那条路线,一定要先阅读它,因为C++和Objul-C的合并不是100%无缝的。

        2
  •  18
  •   Stephen Canon    15 年前

    如果您正在编写一个可移植的库,并且不需要特定的语言特性,为什么不直接用C语言编写它呢?它可以很容易地从C++、C、Objtovi-C和许多其他许多语言调用。

    如果您需要在C中不可用的特定语言功能,您应该告诉我们它们是什么,这样您可以获得更好的建议=)

        3
  •  16
  •   jprofitt    11 年前

    我相信你的信息是错误的。ObjaveC++ 一个C++的超集。任何C++都是合法的ObjultC++。此外,可以将ObjtoE-C和C++代码混合在ObjtoVC++(通常是.mm)文件中,并在ObjuleC++类中混合ObjtoE-C和C++类实例变量。Objto-C++对于Objtovi-C和C++库之间的接口尤其有用。在C++中编写你的跨平台库。然后您可以在应用程序中从Objective-C++调用它。重新阅读目标-C++ section 有关更多信息,请参阅Objective-C语言指南。

    使用Objto-C++的主要缺点是增加编译次数(Objul-C++比C++更差,CLAN LLVM编译器还没有处理ObjuleC++)。ObjuleC和ObjaveC++没有性能上的差异,超过了被调用的代码中的任何差异(例如,如果你是一个更好的C++开发者,你的C++可能会比你的C库更高效,反之亦然)。

        4
  •  7
  •   Jonathan Sterling    15 年前

    如果你打算在iPhone和Mac OS以外的平台上使用这个库,你应该使用C++。如果您只计划将其移植到Mac OS,那么继续使用Objy.C. ObjuleC++是将现有C++代码集成到Objtovi-C项目中的一种方法。因此,您不会在其中编写库。但是,您可以使用Objective-C++从iPhone或Mac项目中使用此库。

        5
  •  3
  •   TouchGameDev    15 年前

    事实上,你可以在XCODE中使用C或C++。将Objective C用于Cocoa和Cocoa Touch(iPhone)的原因是它的易用性以及它如何处理您自己可能遇到的许多内存问题。目标C和Xcode像梦一样工作。我也建议退房 http://www.kevincallahan.org/software/accessorizer.html 存取器是惊人的,它可以将开发时间缩短为零。

    已经说过,在C或C++中编写函数/方法并在XCODE项目的一部分中使用它们时,我看不出问题。只是不要期望使用目标C在其他平台上也能如此出色地发挥作用。苹果和Windows的开发IDE是不同的,微软有一个好习惯,就是不把东西与其他环境(不仅仅是苹果)兼容。

    我很高兴听到有人试图将他们的代码用于其他项目:)现在有太多人忘记创建自己的库,我一点也不知道为什么。

    我希望这有帮助。干杯, 马修

        6
  •  3
  •   TouchGameDev    15 年前

    这是你的警告:花100美元成为一个开发者,并启动Xcode你将在Mac上使用的IDE——这将是你决定的最佳方式,因为很明显你根本不完全理解这个平台是如何工作的。

    请不要对每个想帮助你的人都无礼。这个社区是建立在尊重的基础上的。这里的人真的是在帮助和关心,而且网上几乎没有这样的地方。

        7
  •  1
  •   Till    15 年前

    转到C或C++ -我不知道有任何理由推荐一个超过另一个不知道更多关于你的目标。

    在内存使用方面,C++和C确实需要更规范的编码。在速度方面,C和C++几乎在任何情况下都比任何Objc/Objc++解决方案快。我经常将我的目标C应用程序与C和C++代码混合,并且总是对结果感到满意。正如乔纳森正确地指出的,ObjvEc++主要是在目标C应用程序/S中使用C++代码/库的桥梁。

    您可以自由地使用目标C++中的C++对象。但是,你不能在C++中使用目标C/C++对象。所以这是一条单行道。为了克服这个限制所施加的任何限制,只需在需要的地方用C++ C++类包装C++对象。

        8
  •  1
  •   jacai    9 年前