Swift中沒有.h .m文件
Swift中.swift文件聲明實現(xiàn)不在創(chuàng)建
導(dǎo)入類名:不需要再導(dǎo)入類名所有類名都是分開的可以直接訪問到
導(dǎo)入框架:直接導(dǎo)入框架名如:importUIKit
OC程序入口是main函數(shù)
Swift代碼是從上往下順序執(zhí)行@UIApplicationMain程序的主入口
class:用來聲明類
實例:class
AppDelegate: UIResponder ->class類名:父類
導(dǎo)入代理協(xié)議名字:在父類后面繼續(xù)添加逗號寫上代理柬焕、協(xié)議名字
Swift聲明變量:varwindow:UIWindow?
Swift聲明方法:func用來表示方法
----------------------------
變量、常量的聲明:
var聲明變量
let聲明常量不允許改變
OC:數(shù)據(jù)類型名字=值
Swift:
var名字:數(shù)據(jù)類型=值
let名字:數(shù)據(jù)類型=值
Swift里面語句結(jié)束可以不寫分號但是如果一行有多條語句必須添加分號
Swift也支持中文作為變量名
字符串可以直接通過+拼接
如果聲明的對象是變量但是并沒有去改變這個變量的值系統(tǒng)會提示可以聲明成常量
Xcode7.3后(swift2.2) ++將在swift3中棄用改成+=
Swift自動推斷數(shù)據(jù)類型如果沒有告訴變量的數(shù)據(jù)類型會自動推斷數(shù)據(jù)類型
Swift不同的數(shù)據(jù)類型不允許計算
數(shù)據(jù)類型轉(zhuǎn)換:數(shù)據(jù)類型(要轉(zhuǎn)換的變量)
如果聲明變量的時候不想在聲明的時候去賦值必須添上變量的數(shù)據(jù)類型(沒有推斷的依據(jù)推斷不出數(shù)據(jù)類型)
--------------------------
Swift方法的定義和調(diào)用
func定義方法
func方法的名字()
OC:
- (void)viewDidLoad{
}
Swift:
func viewDidLoad()
oc:
- (void)viewDidAppear:(BOOL)animated{
}
Swift:
funcviewDidAppear(animated:Bool) {
}
---------------------
Swift中調(diào)用其他類的方法用.來調(diào)用
區(qū)間
全閉合區(qū)間區(qū)間
半閉合區(qū)間
12345
全閉合區(qū)間1...5
1234(5)
半閉合區(qū)間1..5
在swift中提倡用區(qū)間
--------------------------
函數(shù)
{}范圍
func函數(shù)名(){}
class類名:父類{}
var變量名=值
let常量名=值
調(diào)用別的方法通過.調(diào)用
color.redColor()
小括號代表是一個方法
--------------------------
可選類型(可空類型):
swift數(shù)據(jù)類型是非常嚴(yán)謹(jǐn)?shù)模Z法不嚴(yán)謹(jǐn)(英文、中文)在實際工作的時候,有可能會把一個空值賦給一個變量
swift不支持不同數(shù)據(jù)類型賦值
故swift出來一個解決辦法--->可選類型(可空類型)
可選類型的符號:
?表示聲明的是一個可選類型檬洞,它也是一種數(shù)據(jù)類型
!表示拆包把可選類型轉(zhuǎn)換成原有數(shù)據(jù)類型
拆包:轉(zhuǎn)換成原有數(shù)據(jù)類型
Optional(傻狗)->傻狗
隱式拆包:可選類型變量后!->let
name1:NSString! = name;
顯式拆包:name!
聲明:
var變量名:數(shù)據(jù)類型?
var
window: UIWindow?
----------------------------
as作為煞茫、明確數(shù)據(jù)類型->使用(1效五、跟其他數(shù)據(jù)類型計算《兩者是包含關(guān)系》2黎茎、需要把子類轉(zhuǎn)換成父類的時候)
as ->明確數(shù)據(jù)類型->在使用的時候
as->子類轉(zhuǎn)父類(明確子類是父類)
NSString是一個類->結(jié)構(gòu)體string
***不同數(shù)據(jù)類型之間轉(zhuǎn)換必須有支持?jǐn)?shù)據(jù)類型的轉(zhuǎn)換方法才可以轉(zhuǎn)換
***如果是自類轉(zhuǎn)父類可以直接賦值
is判斷是不是某個數(shù)據(jù)類型某一數(shù)據(jù)類型(類名)
swift字符串判斷==是否相同
插入字符串"XXX\(插入的內(nèi)容)"
-----------------------------
枚舉:
變化:不止可以把數(shù)字當(dāng)做枚舉,同時還可以把字符串當(dāng)做枚舉值当悔,還可以把幾個內(nèi)容放在一個枚舉值里面
變化:元素之前使用case表示
在使用的時候枚舉的名字.元素傅瞻、.元素
rawValue枚舉里面的值
聲明枚舉的公式:
第一種、
enum枚舉名字:Int{
case元素
case元素
case元素
}
第二種盲憎、
enum枚舉名字:Int{
case元素,元素,元素
}
元組:tuple
1.可以存放不同數(shù)據(jù)類型的元素
2.取值方式
1.可以使用下標(biāo)取值嗅骄,也是從零開始
2.通過key取值(必須定義)
公式:1. (1,"mm",對象)通過下標(biāo)
2. (key:值,key:值)通過key,可以取到不同類型的值key不需要引號
閉包:
封閉的代碼塊也可以把函數(shù)當(dāng)成一個閉包
let閉包名字= {(參數(shù)列表) ->返回值類型in
具體執(zhí)行的代碼
如果有返回值饼疙,就return返回值
}
in前面是聲明后面是實現(xiàn)in后面進(jìn)入代碼塊
swift:
數(shù)組字典:[]
元組:()
oc:
數(shù)組:[]
字典:{}
1.完整公式
{(參數(shù)列表)->返回值類型in實現(xiàn)代碼}
如:let block
= {(a:Int, b:Int)->Intinreturna +
b}
2.簡化版:無參數(shù)無返回值公式
{實現(xiàn)代碼}
如:let block = {}
3.簡化版:有參數(shù)無返回值公式
{(參數(shù)列表)in實現(xiàn)代碼}
如:let block
= {(a:Int)inprint(a)}
4.調(diào)用
閉包名()
如:block()
1.聲明包含閉包的方法
func方法名(閉包名:(參數(shù)列表)->返回值類型){閉包名(實參列表)}
如:func
loadData(respose:(message:NSString)-Void){respose(message:"完成")}
2.調(diào)用包含閉包的方法
方法名{(參數(shù)列表)in實現(xiàn)代碼}
如:loadData{(message:NSString)inprint(message)}
三:typealias替代
typealias要替代成的名字=要替代的數(shù)據(jù)類型
如:typealias
Height =Float
結(jié)構(gòu)體
1.增加方法(可以調(diào)用方法也可以添加方法)
2.增加實例化方法
調(diào)用
使用實例化方法
結(jié)構(gòu)體
1.改變
《1》自動生成實例化方法
《2》可以在結(jié)構(gòu)體中創(chuàng)建方法
《3》可以在結(jié)構(gòu)體中調(diào)用方法
2.公式
聲明:
struct結(jié)構(gòu)體名{
let(var)變量?
func(){}
}
如果方法改變結(jié)構(gòu)體中的值需要在方法前面加上mutabing
使用:
let(var)變量名=結(jié)構(gòu)體名.init()
let(var)變量名=結(jié)構(gòu)體名.init(實參)
3.與類的區(qū)別
1.結(jié)構(gòu)體偏向于處理數(shù)據(jù)
2.類偏向于處理邏輯溺森、關(guān)系
3.類中的對象有對象的特征:封裝繼承多態(tài)
4.引用計數(shù)的處理結(jié)構(gòu)體有專門處理變量的引用計數(shù)