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

淺談iOS關(guān)于頭文件的導(dǎo)入問(wèn)題

 更新時(shí)間:2017年04月18日 08:20:46   作者:馬玉文  
本篇文章主要介紹了淺談iOS關(guān)于頭文件的導(dǎo)入問(wèn)題,具有一定的參考價(jià)值,有興趣的可以了解一下。

關(guān)于import和@class的使用問(wèn)題

.@class的出現(xiàn)可以適當(dāng)減少編譯時(shí)間,提高效率。

現(xiàn)在假設(shè)有兩個(gè)類,一個(gè)是Teacher類,一個(gè)是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

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

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

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類的實(shí)現(xiàn)文件就需要知道Students類的全部借口細(xì)節(jié),因此就需要在此時(shí)使用import “Students.h”。

將引入頭文件的時(shí)機(jī)盡量延后,只有在確有需要的時(shí)候才引入,這樣就可以減少類的使用者所需引入的頭文件的數(shù)量。假如在.h文件的時(shí)候就是用import導(dǎo)入,就會(huì)引入很多不需要使用的內(nèi)容,這必然會(huì)增加編譯時(shí)間。

.@class的出現(xiàn)也兩個(gè)類互相引用的問(wèn)題。

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

小結(jié)

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • iOS實(shí)現(xiàn)從通訊錄中選擇聯(lián)系人

    iOS實(shí)現(xiàn)從通訊錄中選擇聯(lián)系人

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

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

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

    淺談關(guān)于如何檢測(cè)iOS14本地網(wǎng)絡(luò)權(quán)限的一些思路

    這篇文章主要介紹了淺談關(guān)于如何檢測(cè)iOS14本地網(wǎng)絡(luò)權(quán)限的一些思路,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • ios中g(shù)etTime()的兼容性實(shí)例代碼

    ios中g(shù)etTime()的兼容性實(shí)例代碼

    在本篇文章里小編給大家整理的是關(guān)于ios中g(shù)etTime()的兼容性實(shí)例代碼,需要的朋友們可以學(xué)習(xí)下。
    2020-03-03
  • iOS實(shí)現(xiàn)帶指引線的餅狀圖效果(不會(huì)重疊)

    iOS實(shí)現(xiàn)帶指引線的餅狀圖效果(不會(huì)重疊)

    餅狀圖對(duì)大家來(lái)說(shuō)應(yīng)該都不陌生,下面這篇文章主要給大家介紹了關(guān)于iOS實(shí)現(xiàn)帶指引線的餅狀圖效果(不會(huì)重疊)的相關(guān)資料,文章通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • 淺談iOS 屏幕方向那點(diǎn)事兒

    淺談iOS 屏幕方向那點(diǎn)事兒

    這篇文章主要介紹了淺談iOS 屏幕方向那點(diǎn)事兒,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • 淺談強(qiáng)大易用支持URL Rewrite的iOS路由庫(kù)FFRouter

    淺談強(qiáng)大易用支持URL Rewrite的iOS路由庫(kù)FFRouter

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

    iOS開(kāi)發(fā)學(xué)習(xí) ViewController使用示例詳解

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

    iOS UICollectionView刷新時(shí)閃屏的解決方法

    本篇文章主要介紹了iOS UICollectionView刷新時(shí)閃屏的解決方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • 總結(jié)iOS中runtime的使用

    總結(jié)iOS中runtime的使用

    iOS開(kāi)發(fā)中的Runtime可謂是功能強(qiáng)大,同時(shí)Runtime使用起來(lái)也是非常靈活的,通過(guò)本文一起來(lái)學(xué)習(xí)下iOS中的runtime。
    2016-07-07

最新評(píng)論