日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Swift初级入门【步步为营】

發布時間:2025/3/21 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Swift初级入门【步步为营】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

菜鳥向前看。。。。。。

來八一八swift的那些事了

啦啦啦啦啦啦啦,快來打我呀,我就是這么強大,啦啦啦啦啦啦啦啦啦啦啦

目錄

1、swift中let和var的區別

2、swift中的lazy

3、Swift中的注釋

1、swift中let和var的區別

let和var的區別在于對象的內存地址可不可以改變

let代表不可變對象,即對象首地址不能發生改變,也就是說內存地址不能改變;

var代表可變對象,即內存地址可以發生改變,可以修飾指針重新指向的變量;

舉例:

let strB:String = "我是B"

strB = "我是新來的B" ? 這個時候Xcode會提示報錯

Expected 'var' keyword in property declaration?

Insert 'var '

Invalid redeclaration of 'strB'

因為let修飾的變量不能改變指針指向,故這時候Xcode提示你用var

var strB:String = "我是B"

strB = "我是新來的B" ?完美展示不會報錯

再來看看下面這個

let arrayM: NSMutableArray = NSMutableArray()

arrayM.add("我是A") ?Xcode為什么沒有報錯???

let可以修飾可變對象,數組arrayM的內存地址并沒有發生改變,也就是數組arrayM的指針沒有重新指向

2、swift中的lazy

swift中我們在變量屬性前加lazy關鍵字來指定延遲加載,最主要的作用就是提升性能

所謂延遲加載就是在第一次訪問某個屬性時,要判斷這個屬性是否初始化,如果已經初始化則直接返回,如果沒有初始化則進行初始化。這樣可以把這個屬性延遲初始化,把它和包含它的對象初始化分隔開,從而達到提升性能的目的。

延遲加載是初始化時很常用的性能優化方式,尤其是在一些對象的屬性比較復雜時候,默認全部初始化會耗費不少時間,從而影響性能;還有一些在特定場景才能使用到的對象,更是浪費資源。所以有些時候我們并不會立刻用到一個對象或者一個對象的所有屬性,使用延遲加載可以提升性能。示例代碼如下:

private lazy var _titleLabel: UILabel = {

? ? ? ? let titleL = UILabel.init()

? ? ? ? titleL.text = "Hello World"

? ? ? ? return titleL

}()

關于Lazy的拓展:Lazy可以配合map、filter這類接受閉包運行的方法一起,使整個行為變成延遲執行,舉個例子吧

正常情況下:

? ? ? ? ?let numbers = 1...5

? ? ? ? let doubleNumbers = numbers.map { (i:Int) -> Int in

? ? ? ? ? ? print("numbers:\(i)")

? ? ? ? ? ? return i*2

? ? ? ? }

? ? ? ? for i in doubleNumbers{

? ? ? ? ? ? print("doubleNumbers:\(i)")

? ? ? ? }

輸出結果:

numbers:1

numbers:2

numbers:3

numbers:4

numbers:5

doubleNumbers:2

doubleNumbers:4

doubleNumbers:6

doubleNumbers:8

doubleNumbers:10

添加Lazy關鍵字:

? ? ? ? ?let numbers = 1...5

? ? ? ? let doubleNumbers = numbers.lazy.map { (i:Int) -> Int in

? ? ? ? ? ? print("numbers:\(i)")

? ? ? ? ? ? return i*2

? ? ? ? }

? ? ? ? for i in doubleNumbers{

? ? ? ? ? ? print("doubleNumbers:\(i)")

? ? ? ? }

輸出結果:

numbers:1

doubleNumbers:2

numbers:2

doubleNumbers:4

numbers:3

doubleNumbers:6

numbers:4

doubleNumbers:8

numbers:5

doubleNumbers:10

對于一些不需要完全運行或者提前退出的情況,使用lazy進行性能優化更加有效

3、Swift中的注釋

分組注釋

OC中 #pragma mark====== 你要寫的注釋Swift中 //MARK: -你要寫的注釋

?

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Swift初级入门【步步为营】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。