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
- mongoDB安裝與啟動的注意事項MongoDB
- H5活動刮刮卡功能的實現與注意事項H5
- JavaScript 設定CSS與注意事項JavaScriptCSS
- Micro/Mamba 安裝與注意事項
- HTML基本標籤的使用與注意事項HTML
- 向下轉型的注意事項與instanceof的使用
- RandomAccessFile注意事項randomMac
- @Lombok注意事項Lombok
- 換工作的注意事項
- Oracle使用*的注意事項Oracle
- 企業內部管理APP開發注意事項分析-北京銳智互動APP
- 【翻譯】Vue.js 的注意事項與技巧Vue.js
- WebViewJavascriptBridge JS和OC互動WebViewJavaScriptJS
- Cordova JS OC互動方法JS
- SQL 語句的注意事項SQL
- C++ queue的注意事項C++
- 函式注意事項函式
- 生產注意事項
- 電量注意事項
- CSP 考前注意事項
- 快取注意事項快取
- Mysql設計與查詢的關鍵注意事項MySql
- Z-Blog的安裝與升級注意事項
- 直流負載箱的安全事項和注意事項有哪些?負載
- 搭建直播原始碼與軟體開發的注意事項原始碼
- Python eval的用法及注意事項Python
- 刷題時需要的注意事項
- 異常-異常的注意事項
- 說點JSON使用的注意事項JSON
- 畫PCB板時的注意事項
- 使用MyBatis的注意事項有哪些MyBatis
- 使用HTTP的三個注意事項HTTP
- 使用Vue.js的注意事項Vue.js
- Python匯入包的注意事項Python
- 伺服器配置的注意事項伺服器
- 教程:MySQL 8安裝與配置及注意事項MySql
- 部署專案注意事項
- iOS 程式碼注意事項iOS