C文件可以从.c
到.m
文件被修改,并且可以是从其他目标C文件(.m
文件)调用。目标C与目标C++
C++文件可以从.cpp
到.mm
文件被修改,并且可以从其他目标C++文件(.mm
文件)被调用。
.m
文件可以从.mm
文件被称为。但.mm
文件不能从.m
文件调用。
是目标C++在iPhone开发编码必要为UI将在目标C和实施的任何其他协议不能客观C++,因为这(书面协议)将从UI叫这写成目标C。
在什么方案是这样的Objective C++编码使用?
C文件可以从.c
到.m
文件被修改,并且可以是从其他目标C文件(.m
文件)调用。目标C与目标C++
C++文件可以从.cpp
到.mm
文件被修改,并且可以从其他目标C++文件(.mm
文件)被调用。
.m
文件可以从.mm
文件被称为。但.mm
文件不能从.m
文件调用。
是目标C++在iPhone开发编码必要为UI将在目标C和实施的任何其他协议不能客观C++,因为这(书面协议)将从UI叫这写成目标C。
在什么方案是这样的Objective C++编码使用?
.m文件可以从.mm文件中调用。但.mm文件不能从.m文件中调用。
不知道你是什么意思,但我认为这是错误的。
Objective-C(++)的“Objective”部分在两种语言中都是相同的。不管实现是Objective-C还是Objective-C++,对象都是完全可互操作的。
重要的是声明接口的头文件。例如:
@interface Foo
{
CPPFoo myFoo; // A C++ object
}
@end
可以不包括在正常的Objective-C的.m
文件,因为C++类的C.是非法的来解决这个问题的方法之一是使用前置声明和指针如
#if defined __cplusplus
class CPPFoo;
#else
typedef struct CPPFoo CPPFoo;
#endif
@interface Foo
{
CPPFoo *myFoo; // NOTE: a pointer to a C++ object
}
@end
你需要新的-init
指针和-dealloc/-finalize
删除它
号以前我觉得目的C++在iPhone开发的编码需要(来自C++背景),最好只在UI中使用C++和Objective-C。然而,我没有多久意识到Objective-C的对象模型比C++更好。所以现在我会在只有两种情况考虑C++:
接口来写在C++Objective-C++用于任何时候想要混合Objective-C代码和C++代码。
您声明“.mm文件不能从.m文件中调用”不正确。如果您将C++ 放在标头中,那么您无法从纯粹的Objective-C文件调用它,但对于具有使用C++的实现的类,您可以拥有纯粹的Objective-C接口。一个常见的例子是将现有的C++类(也许是一些现有的库)封装为Objective-C类。
请注意星号('* ... *'或'** ... **')而不是反引号('\'... \'')。后者用于格式化内联代码。 – kennytm 2011-05-07 11:57:19
@KennyTM:谢谢你告诉我如何进行格式化,我的下一个格式化就是这样做的。 – spandana 2011-05-07 12:07:55