?版權(quán)聲明:本文為Andy_wangpeng原創(chuàng)文章腾么,未經(jīng)允許不得轉(zhuǎn)載。
如需轉(zhuǎn)載請注明版權(quán)
Swift3.0對比之前Swift2.0大同小異,但是也有很多寫起來不知所措的地方,下面的東西有小編搜集的,也有小編在開發(fā)中遇到车柠,并查閱文檔資料解決的
1.GCD的使用
- 1.最常用的GCD模板
//全局隊列異步執(zhí)行
DispatchQueue.global().async {
//耗時操作寫在這里
DispatchQueue.main.async {
//回到主線刷新
}
}
- 2.延時調(diào)用
let delay:TimeInterval = 3
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delay) {
//3秒后在主線程執(zhí)行
}
2.Any 和AnyObject
Any
和 AnyObject
這兩個類型都是Swift中很早就出現(xiàn)的類型,但是我們經(jīng)常使用AnyObject,很少使用Any塑猖。都可以當(dāng)做匹配所有類型的東西竹祷,事后在強轉(zhuǎn)成自己需要的類型,如果不懂什么意思確實也是很讓人迷惑羊苟。在 Swift 官方編程指南中指出
-
AnyObject 可以代表任何
Class
類型的實例 -
Any 可以表示任意類型塑陵,甚至包括方法 (
func
) 類型
AnyObject
相等于 Objective-C 中的 id 類型,具體如何使用蜡励,小編也很枯燥令花,只是大概知道這兩個東西的意思。(PS:)有知道的小伙伴聯(lián)系我凉倚,我補上用法兼都。)
3.JSON解析
//MARK: - JSON解析:把NSData轉(zhuǎn)換成object
/** JSON解析:把NSData轉(zhuǎn)換成object */
static func JSONObjectWithData(_ data: Data, options opt: JSONSerialization.ReadingOptions, error: NSErrorPointer? = nil) -> AnyObject? {
var object:Any?//先聲明為任意類型進行計算
do {
object = try JSONSerialization.jsonObject(with: data, options: opt)
} catch let aError as NSError{
if error != nil {
error??.pointee = aError
}
}
return object as AnyObject?//后轉(zhuǎn)為專適用于class類型的 AnyObject 類型
}
/** JSON解析:把object轉(zhuǎn)換成NSData */
static func dataWithJSONObject(_ obj: AnyObject, options opt: JSONSerialization.WritingOptions,error: NSErrorPointer? = nil) -> Data? {
var data:Data?
do {
data = try JSONSerialization.data(withJSONObject: obj, options: opt)
} catch let aError as NSError{
if error != nil {
error??.pointee = aError
}
}
return data
}
4.通知的使用
//通知名稱常量
let NotifyChatMsgRecv = NSNotification.Name(rawValue:"notifyChatMsgRecv")
//發(fā)送通知
NotificationCenter.default.post(name:NSNotification.Name(rawValue:"notifyChatMsgRecv"), object: nil, userInfo: nil)
//接受通知監(jiān)聽
NotificationCenter.default.addObserver(self, selector:#selector(didMsgRecv(notification:)),
name: NotifyChatMsgRecv, object: nil)
}
//通知處理函數(shù)
func didMsgRecv(notification:NSNotification){
print("didMsgRecv: \(notification.userInfo)")
}
(持續(xù)更新……………………)
附帶
OC->Swift傳送門
當(dāng)然為了更好的從 OC 轉(zhuǎn)換成Swift 這里再給你提供一個強大的轉(zhuǎn)換平臺如下圖
效果如下:左邊是OC 右邊是swift,代碼遷移相對不錯