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つの言語クラスのオブジェクトの相互参照を示しています.
#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記