02-swift基础语法
最近看了看swift的知识,仅是记录学习过程,如果你是swift小白,可能有一些用呢!😁
下面是swift最基本最简单的一些语法(由于swift目前时时变化,使用语法可能有一定的出入@微博 github完整源码)
1.func 函数
<pre>
// FUNC 1
func swiftFunc() -> () {
}
// 没有参数 没有返回值
func fun1() -> Void{
}
// 有参数 没有返回
func fun2WithA(a a:Int, b: Int, c: Bool) {
}
// 没有参数 有返回
func fun4WithA() -> (Double){
return 0.0;
}
// 有参数 有返回
func fun3(a a:Int, b: Int, c: Bool) -> (Double){
return 1.0;
}
func fun5() -> (a: Int, b: Int) {
return (1,2)
}
func fun6(a:(c: Int, d: Int)) -> (a: Int, b: Int) {
return (1,2)
}
func fun6(f:() -> ()) -> Void {
f();
}
// 使用的注意点
func sub(num1 num1: Int, num2: Int) -> (Int) {
return num1 + num2;
sub(num1: 0, num2: 0)
}
// 一句代码搞定2 个方法
func makeCof(name name: String) -> Void {
return;
makeCof(name: "")
}
func makeCoff(name name: String = "def") -> Void {
return;
makeCoff()
makeCoff(name: "")
}
func makeCOff1(name name: String = "", age: Int, id: Int = 0) -> () {
return;
makeCOff1(age: 1);
makeCOff1(name: "1", age: 10);
makeCOff1(name: "1", age: 0, id: 1);
makeCOff1( age: 1, id: 1);
}
func subs(nums nums: Int...) -> (Int) {
var n = 0
for num in nums {
n+=num
}
return n
subs(nums: 1,2)
}
// 指针类型
func swap( inout num1 num1: Int, inout num2: Int) -> () {
return
}
func fun8() -> () {
func test() -> (){}
test();
}
</pre>
2.类 class
<pre>
class BMPerson {
}
class Person: NSObject {
var name = String?()
// 类的属性处理
// 1 存储属性
// 2 计算属性
// 3 类属性
// 1.
var age: Int = 0
var name1: String?
var name2: String!
// 2.计算属性 j=简单使用
var ave: Int {
return 1
}
// 3.类属性
static var cours: Int = 0;
// 系统自动调super
override init() {
age = 1;
}
// 系统自动调super
init(age: Int, name: String) {
self.age = age
self.name = name
}
init(dict: Dictionary<String, AnyObject>) {
// SWIFT 一般的init 方法不需要调 super.init (因为系统会自动调用)
// 但有一些特殊情况需要自己调用
super.init()
self.setValuesForKeysWithDictionary(dict)
}
// 和oc的kvc设值也可以防止崩溃
override func setValue(value: AnyObject?, forUndefinedKey key: String) {}
}
func personFunc() -> () {
let p = Person();
p.setValue("", forKey: "")
p.setValue("", forKeyPath: "name.aa")
p.setValuesForKeysWithDictionary(["name": "1","name1": "1"])
Person.cours = 0;
}
class BMPerson1: NSObject {
var name: String? {
// 将要改变时
willSet{
print(newValue)
}
// 已经改变时
didSet{
print(oldValue)
}
}
}
</pre>
3.闭包
<pre>
class BMPerson2: NSObject {
var name = ""
func getData(block: ((data: String) -> ())? ) -> () {
self.name = "a"
block?(data: "");
}
// 麻烦
func test1() {
weak var wself = self;
self.getData {(data) in
wself?.name = "1";
}
}
// 不安全
func test2() {
self.getData { [unowned self](data) in
self.name = "1";
}
}
// 推荐
func test3() {
self.getData { [weak self](data) in
self?.name = "1";
}
}
// func 尾部的参数是一个闭包时可以简化写
}
func test11() -> () {
let p = BMPerson2()
p.getData { (data) in
}
}
</pre>