Objective-C學習筆記相關教程

來源:互聯網
上載者:User

Objective-C學習筆記是本文要介紹的內容,如前所述,C + +不會讓你從Objective-C對象繼承C + +類,也不讓你從C + +對象繼承Objective-C類。

 
  1. class Base { };  
  2. @interface ObjCClass: Base ... @end // ERROR!  
  3. class Derived: public ObjCClass ... // ERROR! 

不像Objective-C,在C + +的對象是靜態類型,運行多態視作是例外情況。因此兩種語言的物件模型,無法直接相容。更根本是,在Objective-C和C + +對象的記憶體布局是相互矛盾的。

這意味著它是一般不可能建立一個從兩種語言的角度都有效對象執行個體。因此,這兩個類型階層不能被混合使用。

你可以在一個聲明的Objective-C類中聲明一個C + +類。編譯器已被視為在全域命名空間中聲明這樣的類,如下:

 
  1. @interface Foo {  
  2.     class Bar { ... } // OK  
  3. }  
  4.  
  5. @end  
  6. Bar *barPtr; // OK 

Objective-C允許C結構不論在Objective-C中聲明與否)作為執行個體變數。

 
  1. @interface Foo {  
  2.     struct CStruct { ... };  
  3.     struct CStruct bigIvar; // OK  
  4.  
  5. }  
  6. ...  
  7. @end 

Objective-C在做類似的努力,使C + +類的執行個體,作為執行個體變數。只要c++儘可能的沒有

虛擬成員函數的定義,只是問題隨著它的超類的所有)之所在。如果任何虛擬成員函數存在, 在C + +類不得作為Objective-C的執行個體變數。

 
  1. #import <Cocoa/Cocoa.h> 
  2. struct Class0 { void foo(); };  
  3. struct Class1 { virtual void foo(); };  
  4. struct Class2 { Class2(int i, int j); };  
  5. @interface Foo : NSObject {  
  6.    Class0 class0;      // OK  
  7.     Class1 class1;      // ERROR!  
  8.     Class1 *ptr;        // OK—call 'ptr = new Class1()' from Foo's init,  
  9.     // 'delete ptr' from Foo's dealloc  
  10.     Class2 class2;      // WARNING - constructor not called!  
  11. }  
  12. …  
  13. @end 

C + +中,要求每個包含虛函數的類的執行個體包含一個合適的虛擬函數表的指標。然而,在Objective-C的運行時不能初始化虛

函數表指標。因為它不像C++對象的模型,同樣,在Objective-C的運行時不能要求派遣到C + +建構函式或析構這些對象中。如一個C + +類的任何使用者定義的構造或析構函

數,他們不叫。編譯器會發出警告,在這種情況下。

Objective-C中沒有一個嵌套的命名空間的概念。你不能在C + +命名空間聲明Objective - C類,也不能在申Objective -C類聲明命名空間。

Objective-C的類、協議和類別不能聲明在C + +模板中,也不能在一個Objective-C介面、協議或類別的範圍內聲明一個c++模板。

然而,Objective-C的類可以作為C + +模板參數。在Objective-C資訊運算式中,C + +模板也可以作為接收器或參數使用但不作為選取器的參數)。

小結:Objective-C學習筆記的內容介紹完了,希望本文對你有所協助!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.