Skip to content

Commit f33168d

Browse files
authored
Merge pull request #1 from iOS-Swift-Developers/master
合并请求
2 parents 6e08493 + df23f51 commit f33168d

File tree

44 files changed

+3315
-162
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+3315
-162
lines changed
File renamed without changes.

README.md

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,33 @@ Swift基础知识大全; Swift学习从简单到复杂; 不断地完善与更新
3333
- 属性
3434
- 方法
3535
- 下标subscripts
36+
- 继承
37+
- 构造方法1
38+
- 构造方法2
39+
- 析构方法
40+
- 内存相关
41+
- 可选类型
42+
- 协议
43+
- 扩展
44+
- 泛型
45+
- Swift语法补充
46+
- Swift4.0KVC和KVO
47+
48+
### 今日更新
49+
- Swift语法补充
50+
- Swift4.0KVC和KVO
3651

3752
## 更新中...
53+
接下来开始解读 Swift项目之UIKit和Foundation相关框架!
3854

39-
## Star
4055

41-
[CSDN博客](http://blog.csdn.net/qq_31810357)
56+
## Star
4257

43-
### iOS开发者交流群:446310206 一起来学习吧!
58+
![微信公众号](http://blog26.com/images/wechatscan.gif)
4459

45-
喜欢就❤️❤️❤️star一下吧!你的支持是我更新的动力! Love is every every every star! Your support is my renewed motivation!
60+
微信公众号每周推送新技术, [CSDN博客](http://blog.csdn.net/qq_31810357)欢迎关注交流!
61+
62+
#### iOS开发者交流群:446310206 喜欢就❤️❤️❤️star一下吧!你的支持是我更新的动力!
4663

4764

4865
## License

Swift4.0KVC和KVO/main.swift

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
//
2+
// main.swift
3+
// Swift4.0KVC和KVO
4+
//
5+
// Created by 韩俊强 on 2017/7/12.
6+
// Copyright © 2017年 HaRi. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
12+
/*
13+
Swift4语法 需要在xcode9 iOS11运行
14+
*/
15+
16+
17+
/*
18+
struct 也支持 KVC
19+
*/
20+
21+
/*
22+
struct ValueType {
23+
var name:String
24+
}
25+
var object = ValueType(name: "小韩哥")
26+
let name = \ValueType.name
27+
28+
//set
29+
object[keyPath: name] = "Swift4"
30+
//get
31+
let valueOfName = object[keyPath:name]
32+
*/
33+
34+
35+
36+
/*
37+
KVO: 目前依然只有 NSObject 才支持KVO
38+
*/
39+
//注意:被观察的属性需要用dynamic修饰,否则也无法观察到。
40+
//一个好消息是不需要在对象被回收时手动 remove observer。但是这也带来了另外一个容易被忽略的事情:观察的闭包没有被强引用,需要我们自己添加引用,否则当前函数离开后这个观察闭包就会被回收了。
41+
/*
42+
class OCClass: NSObject {
43+
dynamic var name:String
44+
init(name : String) {
45+
self.name = name
46+
}
47+
}
48+
49+
50+
func TestKVO() {
51+
var swiftClass : OCClass!
52+
var ob: NSKeyValueOperator!
53+
54+
swiftClass = OCClass(name: "OC")
55+
ob = swiftClass.observe(\.name){
56+
(ob, changed) in
57+
let
58+
new = ob.name
59+
print(new)
60+
}
61+
swiftClass.name = "Swift4"
62+
}
63+
TestKVO()
64+
*/
65+
66+
67+
Lines changed: 959 additions & 2 deletions
Large diffs are not rendered by default.

Swift基础语法大全/闭包/main.swift

Lines changed: 0 additions & 156 deletions
This file was deleted.

Swift语法补充/main.swift

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
//
2+
// main.swift
3+
// Swift语法补充
4+
//
5+
// Created by 韩俊强 on 2017/7/12.
6+
// Copyright © 2017年 HaRi. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
/*
12+
断言: 当程序发生异常时, 如果希望找到出错位置并打印一个消息, 就可以使用断言, 即通过一个全局的函数 assert
13+
assert 接受一个闭包作为其第一个参数, 第二个参数是一个字符串; 假如第一个闭包返回的是一个false, 那么这个字符串就会被打印到中控制台上, assert格式如下:
14+
*/
15+
//assert(()-> Bool, "Message")
16+
17+
// 如示例, 我们希望某个函数不为空, 如果为空则会使程序崩溃, 这时就可以使用assert, 当这个函数为空的时候, 会把后面的字符串打印到中控台, 这样就知道哪里出现问题了:
18+
//assert(someFunction() != nil, "someFunction 返回了空值! ")
19+
20+
21+
22+
/*
23+
precondition: 它和 assert 的格式类型, 也是动态的, 它会造成程序的提前终止并抛出错误信息; 前面讲过, Swift 数组的下标操作可能造成越界, 使用扩展的方式向其中怎敢爱一个方法来判断下标是否越界:
24+
*/
25+
extension Array {
26+
func ifOutBounds(index:Int){
27+
precondition((0..<endIndex).contains(index), "数组越界")
28+
print("继续执行")
29+
}
30+
}
31+
[1,2,3].ifOutBounds(index: 2) // index == 3 会被提前终止
32+
33+
34+
//最后要注意: precondition 在一般代码中并不多见, 因为它是动态的, 只会在程序运行时进行检查; 适用于那些无法在编译器确定的风险情况;
35+
36+
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)