1.聲明一個空數(shù)組
var dataSource = [HomeListModel]()
2.打開狀態(tài)欄活動指示器
UIApplication.shared.isNetworkActivityIndicatorVisible = true // 狀態(tài)欄的活動指示器打開
3.Xcode 8
運(yùn)行一堆沒用的logs
解決辦法
Environment Variables -> 添加變量
OS_ACTIVITY_MODE disable
關(guān)閉每次啟動打印的無用信息
4.swift中的通配符 _
5.swift學(xué)習(xí)視頻地址:
http://www.iqiyi.com/u/1080450574/v
6.函數(shù)標(biāo)簽
要加標(biāo)簽的話势似,一般是在第一個參數(shù)之后的參數(shù)加標(biāo)簽
func testConcat2 (v1 : String, andValue2 v2: String, andValue3 v3: String) -> String {
return "1 \(v1) * 2 \(v2) * 3 \(v3)"
}
7.返回函數(shù)地址
func getFuncPointer() -> (Int) -> Int {
func addOne(num: Int) -> Int{
return num + 1
}
return addOne // 這里返回一個函數(shù)地址
}
8.把函數(shù)地址/指針作為參數(shù)衅胀。
func hasAnyMatch(list: [Int], condition: (Int) -> Bool) -> Bool {
for item in list {
if condition(item) {
return true
}
}
return false
}
func lessThanTen(number: Int) -> Bool {
return number <= 10
}
9.<=
必須挨著寫, 不能< =
這樣寫
10.閉包主要解決琉苇,反向傳值
脱篙,和回調(diào)
的問題
閉包語法:
{
(num: Int) -> Bool in
return num >= 40
}
*注意: 參數(shù):num 返回值類型Bool
swift
的閉包類似于oc
的blocks
和c
語言的函數(shù)指針
閉包類似于代理
閉包可讓代碼更加簡潔
11.結(jié)構(gòu)體
與c
語言不通娇钱,可以帶函數(shù),與c++
相似绊困,也可以帶函數(shù)
結(jié)構(gòu)體有構(gòu)造函數(shù)文搂,但是沒有析夠函數(shù)。與面向?qū)ο蟛灰粯印?/p>
mutating
可以讓函數(shù)修改里面的變量秤朗。
12.?
和!
的作用
var name: String? // ? 表示name為空煤蹭,nil或者沒有設(shè)置, name是可選的
swift
的字段是public
class Person {
var age: Int? // age
var name: String? // ? 表示name為空取视,nil或者沒有設(shè)置硝皂, name是可選的
func getAge() -> Int {
return age! // !表示可能返回為nil(空)
}
func getName() -> String {
return name!
}
}
13.類方法和某個對象沒有關(guān)系作谭,以class
開頭就是類方法
class Person {
// 類方法 和某個對象沒有關(guān)系
class func MaxAge() -> Int {
return 200
}
}
// 調(diào)用
Person.MaxAge()
14.便利方法
// 自己寫的便利創(chuàng)建實例方法 用的少
class func person() -> Person {
return Person()
}
15.var window: UIWindow?
// ?
表示稽物,這是一個可選的對象,option
折欠,贝或?
表示 window
可能為nil
(這里表示為初始化為nil
)?
表示window = nil
myLable.textAlignment = NSTextAlignment.right
右對齊
16.swift
的提示
let rect = CGRect.init ... // init就會有提示
let rect2 = CGRect( ... // ( 就會有提示 吼过, 不能() 這樣,這樣沒有提示
myButton.setTitle("click me", for: .normal) // UIControlState.normal 我們使用.normal咪奖,編譯器會自動把它補(bǔ)齊
17.swift
和oc
的事件是關(guān)聯(lián)在一起的
UIButton
添加點擊事件:
myButton.addTarget(self, action: #selector(clickme(sender:)), for: .touchUpInside)
18.導(dǎo)航控制器
19.代理的反向傳值
定義協(xié)議
20.有storyboard 之后盗忱,就不必添加方法了。直接拖拽方法羊赵。
21.UILable添加手勢
第一售淡,要在storyboard
中把user Intewraction Enabled
打開
第二,gesture
的方法要有傳入的參數(shù)慷垮,參數(shù)是手勢
let tap = UITapGestureRecognizer.init(target: self, action: #selector(addFontMethod(sender:)))
self.content.addGestureRecognizer(tap)
func addFontMethod(sender:UITapGestureRecognizer) -> Void {
font += 1
print("\(font)")
}
Xcode Strange Bug: Unknown class in Interface Builder file
解決方法: Custom Class -> Module -> 選擇自己這個項目
23.swift
中也是與oc
一樣揖闸,打全局?jǐn)帱c的那種
24.storyboard
創(chuàng)建 vc
的正確方式
let sb = UIStoryboard.init(name: "Main", bundle: nil)
let vc10 = sb.instantiateViewController(withIdentifier: "ViewController10") as! ViewController10
var cell = tableView.dequeueReusableCell(withIdentifier: cell_id) as? UITableViewCell // as? 強(qiáng)轉(zhuǎn),不是基本類型要這樣強(qiáng)轉(zhuǎn)料身。
25.設(shè)置字體大小
self.fontlabel.font = UIFont.init(name: "Helvetica", size: CGFloat(45)) //注意:一定要設(shè)置name
UIFont.systemFont(ofSize: 45) // 系統(tǒng)字體設(shè)置