swift3.0與OC的互動注意事項
http://www.cocoachina.com/ios/20160620/16769.html
1.id對應Anyobject 但是所有的Anyobject在swift中是可選值, 如果之前的值為可選值, 在被設定為Anyobject後就是多重可選值了
2.swift 中的閉包預設捕獲變數的方式相當於 oc中block中捕獲被標記為 __block的變數方式 -> 就是說 閉包捕獲到的是變數的指標
3.swift中只要不是在多執行緒中, 建議使用[unowned self]來避免迴圈引用, 多執行緒中, 建議使用[weak self]
4.== 操作符相當於oc中的isEqual: --- 即比較內容是否相等;=== 相當於oc中的指標比較
5.繼承自NSObject的子類如果重寫了isEquals:方法, 應當提供 hash 這個屬性
6.如果在swift中遇到oc中不支援的命名 可以利用 @objc(name)為他(屬性 列舉, 方法名...)名個別名 eg.
// MARK:- 事件監聽
extensionMainViewController{
// 事件的監聽本質傳送訊息,但是傳送訊息是OC的特性
@objcfileprivatefunccomposeBtnClick() {
print("composeBtnClick")
}
}
7.dynamic 將屬性或者方法標記為dynamic就是告訴編譯器把它當作oc裡的屬性或方法來使用(runtime),當需要使用 KVO 或者 runtime的時候需要這樣處理
8.當使用oc的 perform(selector, with:)方法的時候會返回一個可選值(指向AnyObject的指標);但是使用perform(:on:with:waitUntilDone:modes:) and perform(:with:afterDelay:)不會返回可選值
9.使用 #keyPath() 可以轉換為string, #keyPath(class.property) == "property",可用於KVC 例如person.value(forKey: #keyPath(Person.name)) = person.name,
10.@IBDesignable 用在class(UIView的子類)宣告的前面, 然後就可以在storyBoard中的inspector編輯它;@IBInspectable 用在(UIView的子類)的屬性前面, 然後就可以在storyBoard中的inspector編輯它 ,就想系統提供的可以設定顏色,字型...
11.oc中的 copy屬性 轉換為swift中的@NSCopying 必須遵守NSCoding協議
相關文章
- WebView與JS的互動,以及注意事項WebViewJS
- OC WKWebView的JS與OC互動、Cookie管理WebViewJSCookie
- oc 與js 的原生互動JS
- mongoDB安裝與啟動的注意事項MongoDB
- JS 與 OC 互動的三種方法JS
- godoc 技巧與注意事項Go
- HTML5接入與OC互動HTML
- oc 與 js互動之vue.jsVue.js
- OC與C++ 混編的檔案互動C++
- Xlistview的注意事項View
- JavaScript 設定CSS與注意事項JavaScriptCSS
- HTML基本標籤的使用與注意事項HTML
- Swift3.0 -- 閉包的迴圈引用與OC的對比Swift
- 企業內部管理APP開發注意事項分析-北京銳智互動APP
- Cordova JS OC互動方法JS
- RandomAccessFile注意事項randomMac
- nginx 注意事項Nginx
- 換工作的注意事項
- Shrink操作的注意事項
- Oracle使用*的注意事項Oracle
- iOS開發:網頁JS與OC互動(JavaScriptCore)iOS網頁JSJavaScript
- 【翻譯】Vue.js 的注意事項與技巧Vue.js
- VM NAT模式主機虛擬機器互聯注意事項模式虛擬機
- WebViewJavascriptBridge JS和OC互動WebViewJavaScriptJS
- 快取注意事項快取
- 使用parallel注意事項Parallel
- 字串分割注意事項字串
- 函式注意事項函式
- DUPLICATE DATABASE 注意事項Database
- bootstrap引用注意事項boot
- ovm搭建注意事項
- C++ queue的注意事項C++
- SQL 語句的注意事項SQL
- java equals()方法的注意事項Java
- oracle 轉pg 的注意事項Oracle
- View手動切換焦點注意事項View
- Mysql設計與查詢的關鍵注意事項MySql
- iterator的romove方法的注意事項