在ios的OC和Swift混合開發(fā)無非是2種,一種是在OC的項(xiàng)目中使用Swift語言開發(fā),這里就需要?jiǎng)?chuàng)建Swift文件(或者引用Swift寫的的第三方庫),另一種是在Swift項(xiàng)目中使用OC語言開發(fā),這里就需要?jiǎng)?chuàng)建OC文件,(或者引用OC寫的的第三方庫)
崆峒網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)公司成立于2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
首先我們?cè)谝粋€(gè)已有的OC的項(xiàng)目中,創(chuàng)建一個(gè)Swift文件
這里Xcode就會(huì)自動(dòng)提示我們?nèi)纾簣D1
Would you like to configure an Objective-C bridging header?
Adding this file to ocProjectUseSwift will create a mixed Swift and Objective-C target. Would you like Xcode to automatically configure a bridging header to enable classes to be accessed by both languages?
提示我們創(chuàng)建一個(gè)橋接的頭文件,當(dāng)我點(diǎn)擊 “ Create? Bridging Header”,Xcode就給我們自動(dòng)創(chuàng)建,自動(dòng)創(chuàng)建的規(guī)則是:項(xiàng)目名+ "-Bridging-Header.h" 如圖2
同時(shí)在項(xiàng)目中創(chuàng)建一個(gè)Swift文件
然后在在 targets - Build Settings - Packaging 中設(shè)置Defines Module 為YES
設(shè)置完后開始使用,怎么在oc中使用Swift的類呢?
重點(diǎn): 在文件中引用 #import "ocProjectUseSwift-Swift.h"? 記住不是我創(chuàng)建的SecondVC.swift,是“項(xiàng)目名-Swift.h"文件名 ,引入這個(gè)文件就引入了所有的Swift文件內(nèi)的類、方法、屬性
說明:這個(gè)文件是系統(tǒng)自動(dòng)創(chuàng)建,自動(dòng)添加所有我們創(chuàng)建的Swift的類的方法和屬性
前提是要在方法和屬性前面要加@objc 如圖3:
用@objc聲明好之后,在我們引用的是“項(xiàng)目名-Swift.h"文件名的?#import "ocProjectUseSwift-Swift.h" 內(nèi)就看到有標(biāo)記了如圖4
這里分了3塊,紅色和綠色標(biāo)記框內(nèi)是我們自己標(biāo)記的oc可用的屬性和方法,藍(lán)色框內(nèi)是系統(tǒng)自己生成的oc可以初始化方法
具體使用就在oc文件中,如圖5:
此事,在這個(gè)OC創(chuàng)建的項(xiàng)目中,我們創(chuàng)建的Swift文件怎么使用OC創(chuàng)建的類呢?
這里就用到我們創(chuàng)建的橋接頭文件了,在圖2中的橋接頭文件,引入OC的頭文件,如圖6
就這樣很簡單,所以Swift文件的類都可以使用這個(gè)OC文件內(nèi)的類了,使用起,和OC調(diào)用OC的類一樣,如如圖7和圖8
Swift的項(xiàng)目中,第一次創(chuàng)建OC的文件,此時(shí)系統(tǒng)會(huì)自動(dòng)幫我們創(chuàng)建橋接頭文件,如圖9
然后就有了和圖2一樣的橋接頭文件,剩下的就和圖6一樣,在橋接頭文件內(nèi)引入頭文件,即可使用OC的類,第三方庫如果也是OC寫的,在引入的時(shí)候也自動(dòng)會(huì)加這個(gè)橋接頭文件,當(dāng)然一個(gè)項(xiàng)目只能加一次,加過的就不需要加了
1.import的類
OC:某個(gè)只要要使用某個(gè)類就要將該類import。
swift:如果是用戶自己創(chuàng)建類,其他類無需import可以直接使用。pod的一些三方類和系統(tǒng)的一些類,在使用的時(shí)候需要import
2.遵守協(xié)議實(shí)現(xiàn)協(xié)議中的代理方法
OC:
swift:
3.函數(shù)的返回值放在了后面
4.函數(shù)的參數(shù)類型放在了參數(shù)名的后面
5.函數(shù)的所有參數(shù)放在了一個(gè)"()"里,并且有了一個(gè)參數(shù)標(biāo)簽
看swift和OC的對(duì)比
枚舉:
OC中:
swift中:
6.swift中的閉包和OC中的block
OC中的block:
swift中的閉包:
6.1解決swift中的閉包引起的循環(huán)引用(使用weak)
7.swift中的可選類型
8.swift中的基本運(yùn)算
只有相同數(shù)據(jù)類型的數(shù)據(jù)才能進(jìn)行運(yùn)算(Int類型要想和Double類型數(shù)據(jù)運(yùn)行,需要先將Int類型數(shù)據(jù)強(qiáng)轉(zhuǎn)成Double類型數(shù)據(jù))
9.swift中的guard
增強(qiáng)了可讀性
9.1.swift中的if
沒有了OC中的”非0即真"
10.swift中的switch
可以判斷多個(gè)條件
可以判斷多種類型
不用寫break了
11.swift中的區(qū)間
12.swift中的元組
取數(shù)據(jù)更加方便
取出之后就知道元素的類型了
13.swift中的可選類型
swift是強(qiáng)類型語言。nil在swift中成了一種特殊類型,不能直接賦值給對(duì)象。只有可選類型才能賦值為nil
13.swift中的類型轉(zhuǎn)化
as as? as!
14.swift中的結(jié)構(gòu)體
14.swift中的屬性
存儲(chǔ)屬性、計(jì)算屬性、類屬性
本篇文章會(huì)持續(xù)更新,愿大家加班不多工資多,男同胞都有女朋友,女同胞都有男朋友。????
全局變量的定義:var timer : Timer!
使用:timer=Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(self.textfieldNotification), userInfo: nil, repeats: true)
textfieldNotification是timer的方法名
銷毀:如果像OC一樣直接timer.invalidate()會(huì)崩潰,要用
guard let timer1 = self.timer
else{ return }
timer1.invalidate()
收錄:
文章標(biāo)題:swiftios開發(fā),swift開發(fā)框架
網(wǎng)頁鏈接:http://sd-ha.com/article42/dsiphhc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、定制網(wǎng)站、全網(wǎng)營銷推廣、靜態(tài)網(wǎng)站、網(wǎng)站營銷、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)