1.声明一个空数组
var dataSource = [HomeListModel]()
2.打开状态栏活动指示器
UIApplication.shared.isNetworkActivityIndicatorVisible = true // 状态栏的活动指示器打开
3.Xcode 8
运行一堆没用的logs
解决办法
Environment Variables -> 添加变量
OS_ACTIVITY_MODE disable
关闭每次启动打印的无用信息
4.swift中的通配符 _
5.swift学习视频地址:
http://www.iqiyi.com/u/1080450574/v
6.函数标签
要加标签的话,一般是在第一个参数之后的参数加标签
func testConcat2 (v1 : String, andValue2 v2: String, andValue3 v3: String) -> String {
return "1 \(v1) * 2 \(v2) * 3 \(v3)"
}
7.返回函数地址
func getFuncPointer() -> (Int) -> Int {
func addOne(num: Int) -> Int{
return num + 1
}
return addOne // 这里返回一个函数地址
}
8.把函数地址/指针作为参数。
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.闭包主要解决,反向传值
,和回调
的问题
闭包语法:
{
(num: Int) -> Bool in
return num >= 40
}
*注意: 参数:num 返回值类型Bool
swift
的闭包类似于oc
的blocks
和c
语言的函数指针
闭包类似于代理
闭包可让代码更加简洁
11.结构体
与c
语言不通,可以带函数,与c++
相似,也可以带函数
结构体有构造函数,但是没有析够函数。与面向对象不一样。
mutating
可以让函数修改里面的变量。
12.?
和!
的作用
var name: String? // ? 表示name为空,nil或者没有设置, name是可选的
swift
的字段是public
class Person {
var age: Int? // age
var name: String? // ? 表示name为空,nil或者没有设置, name是可选的
func getAge() -> Int {
return age! // !表示可能返回为nil(空)
}
func getName() -> String {
return name!
}
}
13.类方法和某个对象没有关系,以class
开头就是类方法
class Person {
// 类方法 和某个对象没有关系
class func MaxAge() -> Int {
return 200
}
}
// 调用
Person.MaxAge()
14.便利方法
// 自己写的便利创建实例方法 用的少
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,编译器会自动把它补齐
17.swift
和oc
的事件是关联在一起的
UIButton
添加点击事件:
myButton.addTarget(self, action: #selector(clickme(sender:)), for: .touchUpInside)
18.导航控制器
19.代理的反向传值
定义协议
20.有storyboard 之后,就不必添加方法了。直接拖拽方法。
http://stackoverflow.com/questions/40256394/how-to-add-action-to-uibarbuttonitem-which-is-created-by-storyboard-in-swift/40256782#
21.UILable添加手势
第一,要在storyboard
中把user Intewraction Enabled
打开
第二,gesture
的方法要有传入的参数,参数是手势
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
一样,打全局断点的那种
24.storyboard
创建 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? 强转,不是基本类型要这样强转。
25.设置字体大小
self.fontlabel.font = UIFont.init(name: "Helvetica", size: CGFloat(45)) //注意:一定要设置name
UIFont.systemFont(ofSize: 45) // 系统字体设置