精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

初探swift語言的學習—Object-C與Swift混編

移動開發(fā) iOS
swift 語言出來后,可能新的項目直接使用swift來開發(fā),但可能在過程中會遇到一些情況,某些已用OC寫好的類或封裝好的模塊,不想再在swift 中再寫一次,哪就使用混編。這個在IOS8中是允許的。

swift 語言出來后,可能新的項目直接使用swift來開發(fā),但可能在過程中會遇到一些情況,某些已用OC寫好的類或封裝好的模塊,不想再在swift 中再寫一次,哪就使用混編。這個在IOS8中是允許的。

先中簡單的入手,先研究在同一個工程目錄下混合使用的情況。

為了演示。先準備兩個類

***個是swift語言寫的類,文件名為 act.swift

  1. import Foundation   
  2.    
  3. class Act : NSObject   
  4. {   
  5.     func hasAct(tag:Int) -> String   
  6.     {   
  7.         switch (tag)   
  8.         {   
  9.         case 1:return "Movie"   
  10.         case 2:return "CCTV"   
  11.         case 3:return "Sport TV"   
  12.         default:return "Area TV"   
  13.         }   
  14.     }   
  15.        
  16.     init()   
  17.     {   
  18.         println("act constructor is called.")   
  19.     }   
  20.        
  21.     deinit   
  22.     {   
  23.         println("act destroyed is called.")   
  24.     }   
  25. }   

第二個是用OC寫的類 頭文件為OCChannel.h ,實現(xiàn)文件為OCChannel.m

頭文件

  1. #import <Foundation/Foundation.h>   
  2.    
  3. @interface OCChannel : NSObject   
  4.    
  5. @property (nonatomic,retain) NSString *ChannelName;   
  6.    
  7. - (NSString *)ChannelChange:(NSInteger) channels;   
  8.    
  9. @end   

實現(xiàn)文件

  1. #import "OCChannel.h" 
  2. #import "SwiftModule-swift.h" 
  3.  
  4. @interface OCChannel() 
  5. Act *act; //swift的類 
  6. @end 
  7.  
  8. @implementation OCChannel 
  9.  
  10. - (id)init 
  11. if (self = [super init]) { 
  12. NSLog(@"OC Constructor is called."); 
  13. //使用Swift類 
  14. act = [[Act alloc]init]; 
  15. return self; 
  16.  
  17. - (void)dealloc 
  18. NSLog(@"OC Destroyed is called."); 
  19. //[act release];//ARC not use 
  20. //[super dealloc];//ARC not use 
  21.  
  22. - (NSString *)ChannelChange:(NSInteger) channels 
  23. return [act hasAct:channels]; 
  24.  
  25. @end  

這個OCChannel為中引用了swift 寫的類Act 。主要是為了演示在同一個工程項目里,swift類調(diào)用OC,同時OC類也調(diào)用Swift。從而形成一種混合編寫的模式。

下面是具體步驟:

1.新建一個Swift工程:我這里工程名為MixDemo

建好后工程:

2.就是分別引入前面的兩個類,咱先一個個來。因為建的是Swift,所以,咱先以Swift工程中引用OC文件進行一次混編

Swift中使用OC

首先Swift中不再使用頭文件和.m文件的方式了。所以也不需要使用import ""來導入頭文件。哪swift 如何能訪問到OC的類聲明的。

其實,swift也是需要使用頭文件進行訪問的,只不過不再需要使用顯式的方式使用import進行導入。有兩種方式來實現(xiàn)這個頭文件的生成。

方式一:在一個全新的Swift,利用***次新建提示的方式自動添加橋接頭文件。

點確定這后就會生成一個以<produceName-Bridging-Header.h>的頭文件。

建好后的工程:

這里有一個地方需要注意的就是在targets->build settings ->Object-C Bridging Header 設(shè)為哪個橋接的頭文件即可。

經(jīng)過上述步驟,橋接文件弄好了就可以

盡情的把想要在swift類中調(diào)用的OC頭文件放使用import "" 寫到這個橋接文件中吧。就像:

  1. //   
  2. //  Use this file to import your target's public headers that you would like to expose to Swift.   
  3. //MixDemo/MixDemo-Bridging-Header.h   
  4.    
  5. #import "OCChannel.h"   

同樣的,當你知道這個swift搜索頭文件的關(guān)系后,就不需要再理會這個-Bridging-Header.h的文件了。完全可以手工建一個并取自己喜歡的名字。如:

方式二:

新建一個頭文件,名為:OCContainerHeader.h

好了,以上的設(shè)置后就完全滿足了Swift使用OC寫的類了。

  1. mport UIKit 
  2.  
  3. class ViewController: UIViewController { 
  4.  
  5. override func viewDidLoad() { 
  6. super.viewDidLoad() 
  7. // Do any additional setup after loading the view, typically from a nib. 
  8.  
  9. //調(diào)用OC類 
  10. var channel = OCChannel() 
  11. println(channel.ChannelChange(10)) 
  12. println(channel.ChannelChange(2)) 
  13.  
  14. override func didReceiveMemoryWarning() { 
  15. super.didReceiveMemoryWarning() 
  16. // Dispose of any resources that can be recreated. 
  17.  
  18.  
  19. }  

好了下面再來看一下OC如何調(diào)用Swift寫的類。(事實上,如果你是一比一抄我這個DEMO,哪么恭喜你,在以上你將編譯不通過。因為我的OC類中引用了swfit 寫的類,所以你要想運行,就必須把哪個Act 的類注釋了才行。)

 

OC如何調(diào)用Swift寫的類

 

OC要想使用,必須有頭文件。而swift文件卻沒有頭文件,所在咱們想必也需要產(chǎn)生一個頭文件。但對于OC調(diào)用swift 的頭文件比較特殊。因頭文件里面的機制是自動生成的,在不熟悉的,不建議手寫。

哪如何產(chǎn)生這個頭文件。(注意,系統(tǒng)設(shè)置的頭文件,在工程中是看不到的。)

產(chǎn)生步驟:

選中targets->build settings ->packing->Product Module Name 中設(shè)置模塊名,這個名稱很重要 swift 的頭文件就是根據(jù)這個來命名的。

這樣,工程中如查Swift要使用OC,則把需要使用的OC類的頭文件,全寫在MixDemo-Bridging-Header.h里。同樣如果OC中所使用的swift類,只需要Clean一把,再編就可以了,但不要忘了導入SwiftModule-swift.h哦(名稱自取,但-swift.h是固定的),另外還有一個需要讀者注意的。

注:

凡是用Swift寫的類,如果不繼成自NSObject或NSObject 的派生類,哪么編譯后將不會生成對應(yīng)的轉(zhuǎn)換類。從而使得OC 中找不到相應(yīng)的聲明。

如我的例子中 class Act 這樣不會被編譯到SwiftModule-swift.h中,但寫為 class Act : NSObject,就可以編譯出相應(yīng)的聲明。另外可以使用@objc加以聲明,但這個還是一樣,類***繼承NSObject下來。就像下面:

  1. import Foundation   
  2.    
  3. @objc(Act)   
  4.    
  5. class Act    
  6. {   
  7.     func hasAct(tag:Int) -> String   
  8.     {   
  9.         switch (tag)   
  10.         {   
  11.         case 1:return "Movie"   
  12.         case 2:return "CCTV"   
  13.         case 3:return "Sport TV"   
  14.         default:return "Area TV"   
  15.         }   
  16.     }   
  17.    
  18.     @objc(init)//原本以為加上這個alloc就可以找到,但不行的。。。   
  19.     init()   
  20.     {   
  21.         println("act constructor is called.")   
  22.     }   
  23.        
  24.     deinit   
  25.     {   
  26.         println("act destroyed is called.")   
  27.     }   
  28. }   

但是在使用時你就會發(fā)現(xiàn)

act = [[Act alloc]init]; //報錯,找不到alloc,因此建議大家還是繼承NSObject.

責任編輯:chenqingxiang
相關(guān)推薦

2014-06-05 14:12:05

SwiftUI學習iOS

2017-08-04 17:44:02

2017-04-07 16:00:59

SwiftObjective-CFramework

2014-08-01 15:16:05

SwiftC語言

2014-06-16 10:02:42

SwiftiOSWWDC

2016-06-07 14:42:18

Swift設(shè)計

2012-05-17 13:47:37

OpenStack架構(gòu)

2017-02-27 15:43:14

iOSObject-CJava

2014-07-01 09:22:01

SwiftObjective-CiOS

2015-06-23 15:48:41

Swift 2.0iOS9

2015-08-14 11:37:37

Swift語言中文版

2015-06-11 11:10:02

Object-C省略參數(shù)

2014-06-03 10:44:20

Swift開發(fā)語言

2014-06-04 10:52:56

Swift蘋果iOS

2018-03-11 08:30:32

Swift 編程語言C語言

2017-09-08 08:48:18

Swift語言數(shù)據(jù)分段機器學習

2015-10-16 09:59:52

SwiftCocoa

2014-12-15 10:16:47

SwiftR語言

2015-06-09 11:12:31

Swift語言Swift特性

2022-07-11 10:17:19

Swift編程語言項目
點贊
收藏

51CTO技術(shù)棧公眾號

开心激情综合| 日韩影片中文字幕| 91色九色蝌蚪| 国产日韩精品在线观看| 免费日韩在线视频| 久久av影视| 欧美一级二级三级蜜桃| 久久国产乱子伦免费精品| 韩国av网站在线| 91在线视频观看| 成人性教育视频在线观看| 日韩成人一区二区三区| 日韩欧美视频专区| 日韩精品在线第一页| 韩国一区二区在线播放| 在线中文字幕播放| 亚洲综合在线第一页| 婷婷四月色综合| 污污视频在线免费看| 黑人巨大精品欧美一区| 日本亚洲精品在线观看| 美女毛片在线观看| 国产精品99久久精品| 亚洲欧美www| 白丝校花扒腿让我c| 国产日本久久| 色婷婷av一区二区三区之一色屋| 国产高清不卡无码视频| 日韩美女网站| 国产色产综合产在线视频| 国产精品制服诱惑| 国产美女无遮挡永久免费| 丝袜国产日韩另类美女| 久久久人成影片一区二区三区观看| 天堂网av2018| 激情五月色综合国产精品| 亚洲国产精品美女| 激情小说欧美色图| 欧美精品三级在线| 91精品国产欧美日韩| 嫩草av久久伊人妇女超级a| 成年人视频免费在线播放| 亚洲蜜桃精久久久久久久| 亚洲女人毛片| 日本激情视频在线观看| 国产欧美精品一区aⅴ影院| 欧美大香线蕉线伊人久久国产精品| 亚洲av无码乱码国产精品久久| 激情国产一区二区| 91久久久在线| 国产欧美一区二区三区视频在线观看| 蜜臀久久久99精品久久久久久| 国产福利视频一区| 中文亚洲av片在线观看| 免费观看成人av| 国产精品久久久久久久久粉嫩av| 亚洲色成人www永久网站| 久久精品五月| 国产精品久久久久久影视| 区一区二在线观看| 日本女优在线视频一区二区| 国产精品久久久久久久久久久新郎| 亚洲精品毛片一区二区三区| 日韩精品电影在线观看| 国产精品亚洲美女av网站| 正在播放木下凛凛xv99| 久草精品在线观看| 亚洲一区久久久| 可以免费观看的毛片| jlzzjlzz国产精品久久| 久久久神马电影| 国产三级电影在线观看| 中文字幕中文字幕在线一区 | 亚洲mv大片欧洲mv大片精品| 日韩视频 中文字幕| 丁香花在线电影小说观看| 五月综合激情日本mⅴ| 日韩黄色片视频| www.一区| 日韩欧美一区二区视频| 麻豆精品国产传媒av| 午夜a一级毛片亚洲欧洲| 一区二区三区精品99久久| 国产尤物在线播放| 亚洲毛片视频| 国产精品一区二区久久国产| 国内精品偷拍视频| 91丨九色丨蝌蚪丨老版| 在线观看免费91| 国产福利在线免费观看| 色综合久久久久| 久久出品必属精品| 亚洲精品合集| 久久视频在线播放| 国产 日韩 欧美 在线| 久久精品国产一区二区| 国产欧美精品一区二区三区| 9色在线观看| 五月综合激情婷婷六月色窝| 日本美女视频一区| 五月激激激综合网色播| 久久不射电影网| 亚洲欧美一二三区| 丁香天五香天堂综合| 涩涩涩999| 国产传媒在线| 欧美一区二区三区免费视频 | 国产精品久久久久影院| www精品久久| 色综合视频一区二区三区日韩| 亚洲国产黄色片| 久久国产波多野结衣| 久久福利一区| 成人欧美一区二区| 黄网址在线观看| 91国产视频在线观看| 日韩精品国产一区| 亚洲成av人片一区二区密柚| 日本亚洲欧美三级| 四季av日韩精品一区| 亚洲人成人一区二区在线观看| 成年人小视频网站| 欧美交a欧美精品喷水| 欧美大片欧美激情性色a∨久久| 中文字幕福利视频| 久久久久久9999| 热99这里只有精品| 91九色鹿精品国产综合久久香蕉| www.日韩.com| 天天综合久久综合| 久久久精品免费观看| www在线观看免费| 亚洲国产欧美国产第一区| 中文字幕欧美日韩精品| 国产又粗又猛又爽又| 91麻豆国产自产在线观看| 国产精品第157页| 久久亚洲精精品中文字幕| 俺也去精品视频在线观看| 欧美男人天堂网| 国产女同互慰高潮91漫画| aaa毛片在线观看| 国产伦精品一区二区三区免费优势| 久久网福利资源网站| 曰批又黄又爽免费视频| 久久人人超碰精品| 91黄色小网站| 国内亚洲精品| 国产极品精品在线观看| 国产视频精品久久| 精品污污网站免费看| 欧美一区二区三区粗大| 青青草国产精品亚洲专区无| 色综合电影网| 国精品产品一区| 精品国产依人香蕉在线精品| 国产伦理吴梦梦伦理| 亚洲欧美经典视频| 91福利视频免费观看| 亚洲视频观看| 久久国产精品 国产精品| 中文字幕 在线观看| 亚洲九九九在线观看| 欧美a视频在线观看| 久久久久久久久97黄色工厂| 91香蕉视频污版| 午夜国产一区二区| 俄罗斯精品一区二区| heyzo在线| 亚洲欧美日韩网| 久久这里只有精品9| 亚洲欧美综合在线精品| a级大片免费看| 激情欧美一区二区三区| 蜜桃网站成人| 男女啪啪999亚洲精品| 久久福利网址导航| 日本免费不卡视频| 在线免费观看视频一区| 日韩三级在线观看视频| 成人福利视频在线| 天天爽人人爽夜夜爽| 欧美淫片网站| 欧美日韩亚洲一区二区三区四区| 91亚洲精品| 欧美黑人国产人伦爽爽爽| 四虎精品在线| 欧美日韩另类一区| 日本熟妇成熟毛茸茸| 中文欧美字幕免费| 久久精品无码专区| 男女男精品网站| 青草青青在线视频| 日韩精品欧美| 久久99精品久久久久久久青青日本| 黄色精品视频| 高清一区二区三区四区五区 | www.亚洲人.com| 日韩专区第一页| 欧美网站大全在线观看| 国产一级性生活| 中文av字幕一区| av在线播放网址| 激情久久久久久久久久久久久久久久| 男女激情无遮挡| 自拍日韩欧美| 亚洲免费久久| 欧美人与牛zoz0性行为| 91精品国产综合久久久久久丝袜| 国产成人精品一区二三区在线观看| 大胆欧美人体视频| 日本天堂在线观看| 精品视频在线播放免| 国产视频一区二区三区四区五区 | 一级片免费网站| 欧美午夜美女看片| 精品午夜福利在线观看| 中文字幕中文字幕中文字幕亚洲无线| 魔女鞋交玉足榨精调教| 国产黄色精品网站| 亚洲欧洲日本精品| 免费日韩精品中文字幕视频在线| 国产午夜精品视频一区二区三区| av一区二区高清| 欧美人xxxxx| 久久精品亚洲成在人线av网址| 91久久久久久久久久| 久久91超碰青草在哪里看| 日本韩国欧美精品大片卡二| 嗯啊主人调教在线播放视频| 欧美国产精品va在线观看| 毛片在线播放a| 最近2019好看的中文字幕免费| 免费福利在线观看| 日韩精品免费综合视频在线播放 | 成人av网址在线| 手机看片国产精品| 国产一区二区三区av电影| 天天视频天天爽| 蜜臀av一区二区三区| 无遮挡又爽又刺激的视频| 国产精品一卡| 久久久久久久久久久久久国产精品| 午夜久久久久| 国产一区二区三区在线免费| 亚洲视频在线免费| 国产精品夜夜夜爽张柏芝| 日韩中文首页| 自拍亚洲欧美老师丝袜| 91精品国产麻豆国产在线观看| 五月天色一区| 日韩av在线播放网址| 亚洲国产精品一区在线观看不卡| 菠萝蜜一区二区| 特级毛片在线免费观看| 亚洲激情久久| av在线免费观看国产| 亚洲小说欧美另类婷婷| 婷婷五月综合缴情在线视频| 99精品视频免费观看| av动漫免费看| 琪琪一区二区三区| 亚洲欧美天堂在线| 国产成人亚洲综合a∨猫咪| 日本少妇一级片| 91老师国产黑色丝袜在线| 青青草福利视频| 国产精品久久毛片| 九九视频在线观看| 欧美日韩亚洲91| 成人免费毛片视频| 3d动漫精品啪啪一区二区竹菊| 国产特级黄色片| 亚洲黄色片网站| 国产视频第一页在线观看| 日韩视频在线免费观看| 污视频网站免费在线观看| 国内精品视频在线| 成人福利片在线| 97碰碰视频| 亚洲三级性片| a级网站在线观看| aa国产精品| 尤物国产在线观看| 成人午夜免费视频| 99精品欧美一区二区| 亚洲欧美经典视频| 狠狠人妻久久久久久综合| 欧美日韩aaaaaa| 色wwwwww| 久久精品国亚洲| 小视频免费在线观看| 成人国产精品免费视频| 麻豆精品av| 大地资源第二页在线观看高清版| 午夜久久福利| 亚洲一级片网站| 99久久免费国产| 欧美第一页在线观看| 狠狠躁夜夜躁人人躁婷婷91| 国产伦精品一区二区三区视频痴汉| 亚洲加勒比久久88色综合| 嫩草在线视频| 日本欧美中文字幕| 成人av综合网| 中文字幕久精品免| 老司机午夜精品视频在线观看| 日本黄色一级网站| 国产欧美精品区一区二区三区| 国产精品成人av久久| 欧美高清性hdvideosex| 欧美偷拍视频| 亚州国产精品久久久| 成人豆花视频| 日韩一区免费观看| 99精品国产在热久久婷婷| 丰满人妻一区二区三区53视频| 国产欧美一区二区三区网站| 日韩乱码人妻无码中文字幕| 欧美一区二区福利在线| 91网在线播放| 国产精品va在线播放我和闺蜜| 国产suv精品一区| 超碰97在线看| 精品一区二区三区在线观看国产 | 香蕉精品视频在线观看| 欧美日韩在线免费播放| www.日韩精品| 日操夜操天天操| 精品欧美乱码久久久久久 | 日韩在线观看视频一区| 九九热r在线视频精品| 电影中文字幕一区二区| 亚洲欧美日韩精品在线| 欧美aaaaaa午夜精品| 老头老太做爰xxx视频| 色哟哟一区二区三区| 色播色播色播色播色播在线| 国模精品系列视频| 国产精品调教| 亚洲人精品午夜射精日韩 | 91精品国产高清一区二区三区 | 精品国产a一区二区三区v免费| 日韩精品 欧美| 99久久精品免费看国产免费软件| 国产在线观看免费av| 精品三级在线观看| h片在线观看| 麻豆av一区二区三区久久| 国产精品久久久久久久久久妞妞 | 欧美一区二区三区高清视频| 成年人免费大片| 日本一区二区三级电影在线观看| 日韩中文字幕在线观看视频| 精品视频—区二区三区免费| 日韩成人动漫| 亚洲最大免费| 国产精品伊人色| 国产真实夫妇交换视频| 亚洲护士老师的毛茸茸最新章节 | 91久久极品少妇xxxxⅹ软件| 中文不卡在线| 日韩av无码一区二区三区不卡 | 六月丁香久久丫| 国产一区二区网| 国产欧美日韩久久| 国产在成人精品线拍偷自揄拍| 欧美美最猛性xxxxxx| 国产精品45p| 丰满人妻中伦妇伦精品app| 国产欧美日韩在线看| 国产黄色片网站| 91av视频在线免费观看| 国产一区二区三区不卡视频网站| 小泽玛利亚视频在线观看| 亚洲精品欧美专区| 亚洲av成人精品毛片| 国产精品久久av| 欧美一区视频| 李宗瑞91在线正在播放| 在线不卡一区二区| brazzers在线观看| 日本欧洲国产一区二区| 国产美女av一区二区三区| 国产成人精品一区二三区| 日日骚av一区| 国产精品chinese在线观看| 国产超碰在线播放| 亚洲国产精品一区二区久久恐怖片 | 奇米精品在线| 国产精品综合二区| 尤物视频免费观看| 久久777国产线看观看精品| 亚洲系列另类av| 亚洲精品无码久久久久久久| 欧美性猛交xxxx偷拍洗澡| 福利视频在线| 欧美一区二区三区四区五区六区| 国内国产精品久久| 国产综合精品视频|