Iphone 目标C和目标C++;

Iphone 目标C和目标C++;,iphone,objective-c,objective-c++,Iphone,Objective C,Objective C++,C文件可以从.C修改为.m文件,也可以从其他目标C文件(.m文件)调用 < > > C++文件可以从 .CPP < /C> >代码> > MM>代码>文件,并可以从其他目标C++文件(mm)/代码>文件中调用。 .m文件可以从.mm文件调用。但是不能从.m文件调用.mm文件 是iPhone开发中需要的目标C++代码,因为UI将在目标C中,并且任何其他协议都不能实现为目标C++(因为这是书面协议)将从编写目标C.< /P>的UI调用。 在什么情况下,使用了目标代码? < P> ObjuleC++,

C文件可以从
.C
修改为
.m
文件,也可以从其他目标C文件(
.m
文件)调用

< > > C++文件可以从<代码> .CPP < /C> >代码> > MM>代码>文件,并可以从其他目标C++文件(mm)/代码>文件中调用。
.m
文件可以从
.mm
文件调用。但是不能从
.m
文件调用
.mm
文件

是iPhone开发中需要的目标C++代码,因为UI将在目标C中,并且任何其他协议都不能实现为目标C++(因为这是书面协议)将从编写目标C.< /P>的UI调用。


<>在什么情况下,使用了目标代码?

< P> ObjuleC++,在你想混合ObjuleC代码和C++代码时使用。
您关于不能从.m文件调用“.mm文件”的陈述不正确。如果将C++放在头中,则不能从纯Objto-C文件调用它,但是对于具有使用C++的实现的类,可以使用纯ObjuleC接口。一个常见的例子是将现有的C++类(也许是现有的库)包装为Objtovi-C类。< / P> < Posiv+C++是在你想混合Objto-C代码和C++代码时使用的。 您关于不能从.m文件调用“.mm文件”的陈述不正确。如果将C++放在头中,则不能从纯Objto-C文件调用它,但是对于具有使用C++的实现的类,可以使用纯ObjuleC接口。一个常见的例子是将现有的C++类(也许是现有的库)包装为Objtovi-C类。 .m文件可以从.mm文件调用。但是不能从.m文件调用.mm文件

我不知道你说的是什么意思,但我认为这是错误的

Objective-C(++)的“Objective”部分在两种语言中是相同的。无论实现是Objective-C还是Objective-C++,对象都是完全可互操作的

重要的是声明接口的头文件。例如:

@interface Foo
{
   CPPFoo myFoo; // A C++ object
}

@end

不能包含在一个普通Objul-C<代码> M< /Cux>文件中,因为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
中新建指针,并在
-dealoc/-finalize
中删除它


是iPhone开发中的必要的C++代码 我以前认为(来自C++背景)最好在C++中使用C++和ObjuleC。然而,我没有意识到Objto-C的对象模型比C++更优秀。所以现在我只考虑C++中的两个例子:

  • 当连接到用C编写的库时++
  • 如果性能很重要,并且您需要一个内置的对象模型(即,您不想使用纯C)
.m文件可以从.mm文件调用。但是不能从.m文件调用.mm文件

我不知道你说的是什么意思,但我认为这是错误的

Objective-C(++)的“Objective”部分在两种语言中是相同的。无论实现是Objective-C还是Objective-C++,对象都是完全可互操作的

重要的是声明接口的头文件。例如:

@interface Foo
{
   CPPFoo myFoo; // A C++ object
}

@end

不能包含在一个普通Objul-C<代码> M< /Cux>文件中,因为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
中新建指针,并在
-dealoc/-finalize
中删除它


是iPhone开发中的必要的C++代码 我以前认为(来自C++背景)最好在C++中使用C++和ObjuleC。然而,我没有意识到Objto-C的对象模型比C++更优秀。所以现在我只考虑C++中的两个例子:

  • 当连接到用C编写的库时++
  • 如果性能很重要,并且您需要一个内置的对象模型(即,您不想使用纯C)

请用星号(
*…*
*…***
)而不是反勾(
`…`
)突出显示。后者用于格式化内联代码。@KennyTM:谢谢你告诉我如何进行格式化。我将在下一次格式化时立即进行格式化。请用星号(
*…*
*…***
)而不是反勾(
`…
)突出显示。后者用于格式化内联代码。@KennyTM:谢谢你告诉我如何进行格式化。我将从下一次格式化开始进行。