Swift學(xué)習(xí)--頭文件的使用

最近公司有新項(xiàng)目想用Swift寫,故先寫個(gè)小Demo學(xué)習(xí)下,并想記錄下學(xué)習(xí)過(guò)程中遇到的問(wèn)題.
因?yàn)轫?xiàng)目中需要用到很多宏定義所以在oc中我們使用pch文件很容易就解決了這個(gè)問(wèn)題,但是 在Swift 中放棄了C語(yǔ)言中的宏定義, 但是也并非不能進(jìn)行宏定義, 在這里我們可以像java一樣進(jìn)行全局常量的定義, 一樣的方便快捷. 簡(jiǎn)單的宏通過(guò)常量設(shè)置即可, 復(fù)雜的宏就需要使用函數(shù)來(lái)返回了, 但是使用起來(lái)也會(huì)很方便, 下面我就使用Swift記錄下常用的宏定義方法.
  • 新建文件, 選擇iOS -> Source -> Swift File
  • 簡(jiǎn)單宏定義
    首先, 要理解在swift中的宏定義的意義, 在swift中, 并非是預(yù)編譯代碼替換, 而是設(shè)置全局常量, 簡(jiǎn)單宏, 直接let 加常量名即可, 復(fù)雜的宏由于必須保證宏的代碼的語(yǔ)句的合法性(C語(yǔ)言就不用擔(dān)心, 合法不合法都會(huì)被替換), 所以使用函數(shù)進(jìn)行實(shí)現(xiàn), 下面會(huì)舉例說(shuō)明.
import Foundation
import UIKit

let Screen_Bounds:CGRect    = UIScreen.main.bounds
let Screen_Width:CGFloat    = UIScreen.main.bounds.width
let Screen_Height:CGFloat   = UIScreen.main.bounds.height
  • 函數(shù)式宏定義

例:(1)swift定義RGB顏色

 self.maintainBtn.backgroundColor = UIColor.init(colorLiteralRed: 1.0/255.0, green: 192/255.0,blue: 152/255.0, alpha: 1.0)

例:(2)oc中定義RGB類型顏色

#define RGB(r, g, b) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1]
self.maintainBtn.backgroundColor = RGB(1, 192, 152);

如何使swift中也能便捷的使用rgb定義顏色了,這個(gè)時(shí)候就要通過(guò)函數(shù)來(lái)實(shí)現(xiàn)了.
func rgbColor(redFlot:Float,greenFloat:Float,blueFloat:Float) -> UIColor {

    return UIColor.init(colorLiteralRed: redFlot/255.0, green: greenFloat/255.0, blue: blueFloat/255.0, alpha: 1.0)
}

 self.maintainBtn.backgroundColor = rgbColor(redFlot: 1, greenFloat: 192, blueFloat: 152)

只需要在我們最初創(chuàng)建的文件中定義該函數(shù)就可以達(dá)到oc中宏
定義一樣的效果,是不是很方便??

  • 當(dāng)然有時(shí)候我們還需要對(duì)常用的第三方進(jìn)行宏定義以便使用起來(lái)更便捷,其實(shí)方法和上面的一樣但是在引用第三方的時(shí)候會(huì)遇到一些問(wèn)題這里一起記錄下

(1):首先我們需要有一個(gè)橋接頭文件,這個(gè)很簡(jiǎn)單只有在Swift中創(chuàng)建一個(gè)oc類的時(shí)候Xcode會(huì)自動(dòng)給我們創(chuàng)建一個(gè)橋頭文件,但是如圖

如果上面路徑已存在的話Xcode就不會(huì)給我們自動(dòng)創(chuàng)建了,第一次發(fā)現(xiàn)這個(gè)問(wèn)題是我也懵逼以為我的Xcode有bug跟同事的不一樣了.

(2):在橋頭文件中引入第三方頭文件

#import "AFNetworking.h"
#import "MBProgressHUD.h"
#import "MJExtension.h"
#import "MJRefresh.h"
#import "MBProgressHUD.h"

但是這時(shí)候我們還是無(wú)法使用這些第三方,這是因?yàn)閟wift還是無(wú)法找到oc類庫(kù)文件的路徑,這時(shí)候就需要在

這行進(jìn)行添加,值得注意的是
添加需要輸入相對(duì)路徑(是文件夾的路徑不是文件路徑?。。。?,并且后面的選項(xiàng)為recursive。現(xiàn)在在swift項(xiàng)目中就可以使用了

func showMsg(currentView:UIView){
    let hub = MBProgressHUD.showAdded(to: currentView, animated: true)
    hub.label.text = "正在加載"
    hub.hide(animated: true, afterDelay: 1.5)
}

// MARK: RequestData
    func requestData() {
        showMsg(currentView: self.view)
    }
這就是這次頭文件使用時(shí)遇到的一些問(wèn)題,

Demo地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,158評(píng)論 4 61
  • 第一章 讓相識(shí)自然而然 4.內(nèi)在足夠強(qiáng)大,搭訕才夠影響力 陽(yáng)光的心態(tài),即知足,感恩,達(dá)觀這樣一種健康的心態(tài)。 心態(tài)...
    張凱文KK閱讀 370評(píng)論 0 0
  • 每個(gè)人的成長(zhǎng)都會(huì)或多或少留下些許回憶,想必你有些不甘或者傷痛吧? 愿意把你的故事,心情,煩惱,憂愁……倒出來(lái)嗎? ...
    淓淓閱讀 353評(píng)論 0 0

友情鏈接更多精彩內(nèi)容