1. 程式人生 > >android攻城獅開發iOS .m和.h的區別

android攻城獅開發iOS .m和.h的區別

最近一直在忙,沒有繼續更Android攻城獅iOS開發,今天繼續更新。

Android 開發中我們用Java開發檔案的字尾都是.java 結束的,用kotlin開發字尾為.kt,但是ios中我們發現有它有.h和.m之分,下面我們來看一下他們的區別吧:

.h檔案
在這裡插入圖片描述

.m檔案
在這裡插入圖片描述

在.h檔案中

      有一個import,這是用來匯入工具包,就是foundation框架

      @這個標誌表示你使用的是object-c語言

     @interface 是宣告類的關鍵字 

     People是類名

     : 冒號表示繼承,oc中是單繼承模式

     NSObject是父類

     在@interface和@end之間是用來宣告屬性和方法的

.h中的@interface @end 這一對也可以寫在.m檔案的上方,就可以實現在.m檔案中宣告屬性

例如這樣
在這裡插入圖片描述

在.m檔案中宣告的屬性是無法被外界看到的,所以也成為私有屬性,而在.h中的屬性就是public屬性

在.m檔案中

#import ”People.h“ 用來匯入.h中宣告的屬性和變數

@implementation People implementation是實現類的關鍵字

@interface的{ }裡面和外面。在與標頭檔案對應的.m檔案中的使用是沒有什麼區別的,直接使用即可,主要區別在於外部呼叫。

寫在@interface的{ }裡面的變數只能在本類和子類(派生類)中使用,相當於C++中的保護型(protect)。

而寫在@interface的{ }外面的變數可以在任何類中使用,相當於C++中的公有型(public)。

方法的定義就相對簡單,帶有“-”號的方法只能在本類和子類(派生類)中使用,相當於C++中的保護型(protect)。

帶有“+”號的方法可以在任何類中使用,相當於C++中的公有型(public)。

但是,IOS對於開發者使用公有型(public)變數和方法做了十分謹慎的限定,公有型的變數有@property屬性進行引用計數和記憶體限制(這個以後再講)。而帶有“+”號的公有型方法還有static的屬性,可以直接使用類名進行呼叫。
C++中的私有型(private)與保護型和公有型的變數(方法)區別在於無法被外部呼叫,因此IOS做了個巧妙的方法加以區別,將私有型變數(方法)放入.m檔案中定義。

在.m檔案的開始處有一個@interface定義,寫在{ }裡面的變數就是本類的私有型(private)變數。在{ }外面是不能再定義變數只能定義方法,這裡定義的方法也是私有型的。