欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談iOS關于頭文件的導入問題

 更新時間:2017年04月18日 08:20:46   作者:馬玉文  
本篇文章主要介紹了淺談iOS關于頭文件的導入問題,具有一定的參考價值,有興趣的可以了解一下。

關于import和@class的使用問題

.@class的出現可以適當減少編譯時間,提高效率。

現在假設有兩個類,一個是Teacher類,一個是Students類。

Teacher類

#import <Foundation/Foundation.h>
#import "Students.h"

@interface Teacher : NSObject

@property (copy,nonatomic)NSString *firstName;
@property (copy,nonatomic)NSString *lastName;
@property (strong,nonatomic)Students *student;

@end

在類中聲明三個屬性,其中有一個屬性為Students類屬性。這時候既然使用到Students類,就需要導入該類的頭文件。如如上代碼。

注意:此時使用的是import導入的。這個方法可行但是不夠優(yōu)雅,存在一個問題,在聲明文件中,我們不需要知道Students類的全部細節(jié),只需要知道類名是Students就可以。如下使用@class解決問題,這叫“向前聲明”該類。

Teacher.h

#import <Foundation/Foundation.h>

@class Students;

@interface Teacher : NSObject

@property (copy,nonatomic)NSString *firstName;
@property (copy,nonatomic)NSString *lastName;
@property (strong,nonatomic)Students *student;

@end

Teacher.m

#import "Teacher.h"
#import "Students.h"

@implementation Teacher

@end

Teacher類的實現文件就需要知道Students類的全部借口細節(jié),因此就需要在此時使用import “Students.h”。

將引入頭文件的時機盡量延后,只有在確有需要的時候才引入,這樣就可以減少類的使用者所需引入的頭文件的數量。假如在.h文件的時候就是用import導入,就會引入很多不需要使用的內容,這必然會增加編譯時間。

.@class的出現也兩個類互相引用的問題。

Teacher.h

#import <Foundation/Foundation.h>

#import "Students.h"

@interface Teacher : NSObject

@property (copy,nonatomic)NSString *firstName;
@property (copy,nonatomic)NSString *lastName;
@property (strong,nonatomic)Students *student;

@end

Students.h

#import <Foundation/Foundation.h>

#import "Teacher.h"

@interface Students : NSObject

@property (strong,nonatomic)Teacher *teacher;

@end

在Students類中import “Teacher.h”,同時在Teacher類中import “Students”類,這就造成了循環(huán)引用問題,程序在編譯的時候就會出現無休止的編譯。此時只需要將其中一個import改成@class即可,如果兩者的.h文件都不需要知道對方類的全部借口細節(jié),最佳方案是全部使用@class。

小結

除非確實有必要,就不要引入頭文件。一般來說,在.h文件中應該使用向前聲明來提及別的類,然后在.m文件引入那些類的頭文件。這樣做可以盡量降低類的耦合。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • iOS實現從通訊錄中選擇聯系人

    iOS實現從通訊錄中選擇聯系人

    這篇文章主要為大家詳細介紹了iOS實現從通訊錄中選擇聯系人,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 99%?iOS開發(fā)都不知道的KVO崩潰分析詳解

    99%?iOS開發(fā)都不知道的KVO崩潰分析詳解

    這篇文章主要為大家介紹了99%?iOS開發(fā)都不知道的KVO崩潰分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 淺談關于如何檢測iOS14本地網絡權限的一些思路

    淺談關于如何檢測iOS14本地網絡權限的一些思路

    這篇文章主要介紹了淺談關于如何檢測iOS14本地網絡權限的一些思路,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • ios中getTime()的兼容性實例代碼

    ios中getTime()的兼容性實例代碼

    在本篇文章里小編給大家整理的是關于ios中getTime()的兼容性實例代碼,需要的朋友們可以學習下。
    2020-03-03
  • iOS實現帶指引線的餅狀圖效果(不會重疊)

    iOS實現帶指引線的餅狀圖效果(不會重疊)

    餅狀圖對大家來說應該都不陌生,下面這篇文章主要給大家介紹了關于iOS實現帶指引線的餅狀圖效果(不會重疊)的相關資料,文章通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2018-04-04
  • 淺談iOS 屏幕方向那點事兒

    淺談iOS 屏幕方向那點事兒

    這篇文章主要介紹了淺談iOS 屏幕方向那點事兒,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • 淺談強大易用支持URL Rewrite的iOS路由庫FFRouter

    淺談強大易用支持URL Rewrite的iOS路由庫FFRouter

    FRouter 是 iOS 中一個強大且易用的 URL 路由庫,支持 URL Rewrite,基于匹配查找 URL,效率高。非常具有實用價值,需要的朋友可以參考下
    2018-10-10
  • iOS開發(fā)學習 ViewController使用示例詳解

    iOS開發(fā)學習 ViewController使用示例詳解

    這篇文章主要為大家介紹了iOS開發(fā)學習 ViewController使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • iOS UICollectionView刷新時閃屏的解決方法

    iOS UICollectionView刷新時閃屏的解決方法

    本篇文章主要介紹了iOS UICollectionView刷新時閃屏的解決方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • 總結iOS中runtime的使用

    總結iOS中runtime的使用

    iOS開發(fā)中的Runtime可謂是功能強大,同時Runtime使用起來也是非常靈活的,通過本文一起來學習下iOS中的runtime。
    2016-07-07

最新評論