IOS 12日目——Obj-C++
あっという間にもうすぐ半月になります.正式にObj-Cを勉強してからもう半月に近いです.この時間はObj-Cという言語について簡単で初歩的な認識を持っています.では、今日はObj-C++を勉強します.Obj-C++とは、Obj-CとコードとC++コードを同じファイルに統合することです.このようなObj-C/C++の混合をObj-C++と呼び,開発者にObj-CアプリケーションにC++ライブラリを追加させることができる.
Obj-C++では、Obj-CコードでC++のメソッドを呼び出すことができます.逆に、オブジェクトのポインタは両方の言語でポインタだけで、どこでも使用できます.では注意しなければならないのはObj-CとC++が混ざっている場合、ファイルを保存する必要があります.mmフォーマットで、コンパイラの識別が容易になり、次のコードは2つの言語クラスのオブジェクトの相互参照を示しています.
では、上記のコードでは、C++クラスHelloにおいてObj-CオブジェクトNSStringを用い、Obj-CクラスGreetingにおいてC++クラスHelloをインスタンス変数として引用し、Obj-CクラスメソッドにおいてC++クラスのメソッドを呼び出したが、Obj-CはC++クラスを継承することができず、逆もできないことに注意しなければならない.
同時にいくつかのC++の特性もObj-Cに加えることができなくて、逆も同様で、その上、2つの言語の異常な処理も互換性がないので、この部分は私達は簡単に理解します.
OK、私がC++を学んだことがないことを考慮して、だからこの部分は私にとって、確かに簡単な理解で、それから後の開発の過程の中で、私はやはりもっとObj-Cを採用して開発することができると信じて、しかしCを理解して、確かに多くの技術の牛に言ったように、底のいくつかのものに対して理解するのはもっと簡単です.
2013年04月25日、Eric.Tang記
Obj-C++では、Obj-CコードでC++のメソッドを呼び出すことができます.逆に、オブジェクトのポインタは両方の言語でポインタだけで、どこでも使用できます.では注意しなければならないのはObj-CとC++が混ざっている場合、ファイルを保存する必要があります.mmフォーマットで、コンパイラの識別が容易になり、次のコードは2つの言語クラスのオブジェクトの相互参照を示しています.
#import <Foundation/Foundation.h>
// C++
Class Hello
{
private:
id greeting_text;//NSString
public:
Hello()// Hello
{
greeting_text=@"Hello, world!";
}
Hello(const char* initial_greeting_text)// Hello
{
greeting_text=[[NSString alloca] initWithUTF8String:initial_greeting_text];
}
void say_hello()
{
printf("%s
",[greeting_text UTF8String])
}
};
// Obj-C Greeting
@interface Greeting : NSObject
{
Hello *hello;
}
// Greeting
-(id)init;
-(void)dealloc;
-(void)sayGreeting;
-(void)sayGreeting:(Hello*)greeting;
@end
@implementation Greeting
(id)init
{
self=[super init];
if(self)
{
hello=new Hello();// C++ , C++ Obj-C new C++
}
return self;
}
(void)dealloc
{
delete hello;// C++ hello
[super dealloc];
}
(void)sayGreeting
{
hello->say_hello();// C++ Hello say_hello
}
(void)sayGreeting:(Hello*)greeting
{
greeting->say_hello();
}
@end
int main()
{
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init];
Greeting *greeting=[[Greeting alloc] init];// Greeting
[greeting sayGreeting]; // Hello, world!
Hello *hello=new Hello("Bonjour, monde!"); // Hello
[greeting sayGreeting:hello]; // Bonjour, monde!
delete hello; // hello
[greeting release];
return 0;
}
では、上記のコードでは、C++クラスHelloにおいてObj-CオブジェクトNSStringを用い、Obj-CクラスGreetingにおいてC++クラスHelloをインスタンス変数として引用し、Obj-CクラスメソッドにおいてC++クラスのメソッドを呼び出したが、Obj-CはC++クラスを継承することができず、逆もできないことに注意しなければならない.
同時にいくつかのC++の特性もObj-Cに加えることができなくて、逆も同様で、その上、2つの言語の異常な処理も互換性がないので、この部分は私達は簡単に理解します.
OK、私がC++を学んだことがないことを考慮して、だからこの部分は私にとって、確かに簡単な理解で、それから後の開発の過程の中で、私はやはりもっとObj-Cを採用して開発することができると信じて、しかしCを理解して、確かに多くの技術の牛に言ったように、底のいくつかのものに対して理解するのはもっと簡単です.
2013年04月25日、Eric.Tang記