留給自己的紀念,給自己點壓力,也給自己點動力!
目標:1個月內學習swift 並使用swift重構工銀現金快線。
閱讀開源專案
一.函式標記 :
(1)override func (複寫,過載 )
代表:過載方法
例子:override func viewdidload()
(2)escaping 逃離函式閉包 相當於block
(3)as 型別轉換 是否 as左邊是否為as右邊相同型別或者子類
(4)fileprivate let (檔案私有) 相當於當前檔案的巨集定義,用於定義全域性的字串巨集
private: 私有屬性和方法,僅在當前類中可以訪問,不包括分類;
fileprivate: 檔案內私有屬性和方法,僅在當前檔案中可以訪問,包括同乙個檔案中不同的類。
(5)lazy var (懶載入)
(6)extension (擴充套件)
增加計算例項屬性和計算型別屬性
定義例項方法和型別方法
提供新的初始化器
定義下標
定義和使用新的內建型別
讓乙個存在的型別服從乙個協議
(7)required init() {}
1、required修飾符只能用於修飾類初始化方法。
2、當子類含有異於父類的初始化方法時(初始化方法引數型別和數量異於父類),子類必須要實現父類的required初始化方法,並且也要使用required修飾符而不是override。
3.當子類沒有初始化方法時,可以不用實現父類的required初始化方法。
(8) @iboutlet weak var (xib連線乙個控制項)
(9) guard
與if語句相同的是,guard也是基於乙個表示式的布林值去判斷一段**是否該被執行。與if語句不同的是,guard只有在條件不滿足的時候才會執行這段**。你可以把guard近似的看做是assert,但是你可以優雅的退出而非崩潰。
1.是對你所期望的條件做檢查,而非不符合你期望的。又是和assert很相似。如果條件不符合,guard的else語句就執行,從而退出這個函式。
2.如果通過了條件判斷,可選型別的變數在guard語句被呼叫的範圍內會被自動的拆包 - 這個例子中該範圍是fooguard函式內部。這是乙個很重要,卻有點奇怪的特性,但讓guard語句十分實用。
3.對你所不期望的情況早做檢查,使得你寫的函式更易讀,更易維護。
(10) didset willset (kvo底層實現)
(11) @objc func 新增標記 因為oc是執行時demo,swift在編譯時就決定相關事情,如果混編時需要執行時runtime獲取swift相關類或者函式時,就需要@objc標識修飾,,,繼承nsobject的類不需要@objc修飾,系統自動新增修飾符
你業餘時間在做什麼?
author skate time 2010 04 20 哈佛大學凌晨4點半的景象 在網上看到這篇文章,覺得很有感觸,或許這再一次印證任何人每一次的成功背後都有不為人知的付出和汗水。人的時間和精力都是有限的,所以,要利用時間抓緊學習,而不是將所有的業餘時間都用來打瞌睡。有的人會這樣說 我只是在業餘時...
兩周的業餘時間,寫了個簡單的shell
linux下的,環境是 fedora 實現了基本的內部命令功能,及比較完善的內部命令框架。類似於mfc訊息對映表的方式,寫完乙個內部命令,只需要向這個標頭檔案中,匯入乙個標頭檔案,再寫入命令處理函式,就可以把乙個內部命令插入到內部命令表中 好歹我也是看過猴姐書的人。我的程式現在的缺點就是,不能執行終...
1x1的卷積能做什麼呢?
所謂通道壓縮,network in network是怎麼做到的?對於如下的二維矩陣,做卷積,相當於直接乘以2,貌似看上去沒什麼意義。但是,對於下面這種32通道的資料,如果我用1個1x1x32的卷積核與其做卷積運算,得到的就是1個6x6的矩陣。在這個過程中,發生了如下的事情 同理,如果我用n個1x1x...