具有一些Objective-C的项目具有一些C类,其实现文件具有.mm扩展名.
file.h
file.mm
Run Code Online (Sandbox Code Playgroud)
什么是.mm是什么意思?不应该只是.m?
我想为iPhone创建一个可移植的库,也可以用于其他平台.
我的问题是休息:
有谁知道iPhone上最好用的是什么:Objective-C或Objective-C++?它是否适用于C++与Objective-C与C相同?
理由: Objective-C是C的超集,但Objective-C++ is not是C++ 的超集.
提前致谢!
更新:在同一个用例的实现中,内存使用情况,速度如何?
更新1:如果有人可以提供更多信息,我将受到欢迎.
我正在使用Google Analytics,在运行pod后,会显示这些错误.我不明白为什么; project也有Crashlytics框架,但只有在添加Google Analytics后才会显示这些错误.
Undefined symbols for architecture x86_64:
"std::get_terminate()", referenced from:
_CLSExceptionCheckHandlers in Crashlytics(CLSException.o)
"std::set_terminate(void (*)())", referenced from:
_CLSExceptionInitialize in Crashlytics(CLSException.o)
CLSTerminateHandler() in Crashlytics(CLSException.o)
"std::terminate()", referenced from:
___clang_call_terminate in Crashlytics(CLSException.o)
"typeinfo for char const*", referenced from:
_CLSExceptionRaiseTestCppException in Crashlytics(CLSException.o)
GCC_except_table1 in Crashlytics(CLSException.o)
"typeinfo for std::exception", referenced from:
GCC_except_table1 in Crashlytics(CLSException.o)
typeinfo for std::exception const* in Crashlytics(CLSException.o)
"vtable for __cxxabiv1::__class_type_info", referenced from:
typeinfo for std::__1::__basic_string_common<true> in Crashlytics(CLSException.o)
NOTE: a missing vtable usually means the first non-inline virtual member function has …Run Code Online (Sandbox Code Playgroud) 假设我正在使用Apple最新的Xcode工具开发一个典型的Mac或iOS应用程序.进一步假设我主要使用Objective-C开发此应用程序,并利用Apple的Cocoa或Cocoa Touch框架中的所有相关API.
假设我目前没有计划在我的代码库中使用C++或Objective-C++,但我怀疑未来的某些时候我可能想在这里使用一些Objective-C++.
所以我正在考虑将所有.m文件命名为.mm,以防万一.(这将在我的SCM系统中产生更清晰历史的效果,因为我以后不必重命名文件.)
这是一个坏主意吗?有没有理由为什么使用.mm文件肯定或明显比使用.m文件实际上不包含任何Objective-C++时更糟糕?
据推测,这个文件扩展名翻转了编译器中的一些开关,然后编译器不仅需要解析ObjC的源代码,还需要解析C++的源代码.这是否会对中到大代码库的构建时间产生显着的负面影响?
它是否有任何其他负面(或积极)影响我应该记住?
注意:请不要回答有关ObjC或C++是否更好的任何评论.这不是这个问题的意思.