Swift可行性分析

swift優(yōu)勢:

兼容性:
  • 對oc無縫兼容:
    通過建立橋接文件實現(xiàn)使用swift語法調(diào)用原oc代碼
    例如:新建zaozuo-ios-Bridging-Header.h文件,導(dǎo)入oc需要暴露給swift的類
//FMDB
#import "FMDB.h"

// shareSdk
#import <ShareSDK/ShareSDK.h>
#import <ShareSDKUI/ShareSDK+SSUI.h>
#import <ShareSDKConnector/ShareSDKConnector.h>
//騰訊SDK頭文件
#import <TencentOpenAPI/TencentOAuth.h>
#import <TencentOpenAPI/QQApiInterface.h>
//微信SDK頭文件
#import "WXApi.h"
//新浪微博SDK頭文件
#import "WeiboSDK.h"
  • Foundation球昨、UiKit等系統(tǒng)框架保持oc調(diào)用方式
新特性:
  • 新增泛型;
  • 支持閉包(類似block)辕近,可用于回調(diào);
  • 新增元組;
  • 數(shù)據(jù)類型更加簡潔迹冤,常用基本數(shù)據(jù)類型:String讽营、Int、Double泡徙、Array<T>橱鹏、Dictionary<K, V>、Set<T> 堪藐,Array莉兰、Dictionary都具有可變性 ;
  • 函數(shù)支持嵌套礁竞、多返回值(借助元組)糖荒,函數(shù)作為參數(shù)傳遞;
  • 新增Optionals,借助Optionals nil檢查減少空指針異常模捂;
  • 新增as語法捶朵,可用于類型轉(zhuǎn)換, 例如:String as NSString;
  • 無所不能的switch枫绅。

swift劣勢:

兼容性問題
  • swift調(diào)用原有oc導(dǎo)致的類型轉(zhuǎn)換問題:
    例如:原oc中NSArray會被轉(zhuǎn)換為Array<AnyObject>泉孩,如果原oc NSArray中存放的對象非繼承自AnyObject(例如:枚舉類型)帶來的轉(zhuǎn)換問題(枚舉類型可調(diào)用rawValue傳入原始值);
  • 枚舉等一些特殊類型調(diào)用方式略變并淋。
CocoaPods支持問題:
  • Embedded frameworks require a minimum deployment target of iOS 8
    deployment target:7.0+無法使用CocoaPods引入swift開源庫;
  • 7.0+ CocoaPods替代方案:
    采用swift library 可采用git subModule管理(當(dāng)項目target:8.0+只需移除subModule寓搬,加入到CocoaPods),oc library 可保持CocoaPods依賴方式;
nil 處理方式改變县耽,可能引入的新問題:
  • swift采用Optionals處理變量值為nil的情況句喷,正常情況下增強了調(diào)用的安全性镣典,對于Optionals類型如果采用!強制取值可能引發(fā)無法避免的空指針;
    例如:
public static func dictionaryToEntityList<T:BaseModel>(set:FMResultSet)
        -> Array<T>{
        var arr:Array<T> = []
        while set.next(){
            var entity:AnyObject = T.classForCoder().alloc()
            if entity is T{
                dictionaryToEntity(set.resultDictionary(), object: entity as! T)
                arr.append(entity as! T)
            }
        }
        return arr
    }

上面函數(shù)唾琼,傳入的參數(shù)set是非Optionals兄春,當(dāng)采用以下方式調(diào)用時,可能引發(fā)空指針異常锡溯,而在dictionaryToEntityList函數(shù)中卻無法避免此問題

var set:FMResultSet? = nil
dictionaryToEntityList(set!)
  • 解決方案:
    將set更改為Optionals或在dictionaryToEntityList函數(shù)中傳入set前做非nil校驗赶舆。

UI方案:

采用storyborad:

  • 多人協(xié)作不可同時修改storyboard中同一個ViewController
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市祭饭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌倡蝙,老刑警劉巖九串,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡拂玻,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門宰译,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人魄懂,你說我怎么就攤上這事沿侈。” “怎么了市栗?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵缀拭,是天一觀的道長。 經(jīng)常有香客問我填帽,道長蛛淋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任篡腌,我火速辦了婚禮褐荷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嘹悼。我一直安慰自己叛甫,他們只是感情好层宫,可當(dāng)我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著其监,像睡著了一般萌腿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上抖苦,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天毁菱,我揣著相機與錄音,去河邊找鬼锌历。 笑死贮庞,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的辩涝。 我是一名探鬼主播贸伐,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼怔揩!你這毒婦竟也來了捉邢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤商膊,失蹤者是張志新(化名)和其女友劉穎伏伐,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晕拆,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡藐翎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了实幕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吝镣。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖昆庇,靈堂內(nèi)的尸體忽然破棺而出末贾,到底是詐尸還是另有隱情,我是刑警寧澤整吆,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布拱撵,位于F島的核電站,受9級特大地震影響表蝙,放射性物質(zhì)發(fā)生泄漏拴测。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一府蛇、第九天 我趴在偏房一處隱蔽的房頂上張望集索。 院中可真熱鬧,春花似錦、人聲如沸抄谐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛹含。三九已至毅厚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間浦箱,已是汗流浹背吸耿。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留酷窥,地道東北人咽安。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像蓬推,于是被迫代替她去往敵國和親妆棒。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容