1)在dart里如果想類內(nèi)部的方法不被外部調(diào)用的話,可以在方法前面加個(gè)_就可以 2)在同一個(gè)文件里面_是可以訪問的 3)dart里用this可以進(jìn)行賦值,this.age就是...
1)在dart里如果想類內(nèi)部的方法不被外部調(diào)用的話,可以在方法前面加個(gè)_就可以 2)在同一個(gè)文件里面_是可以訪問的 3)dart里用this可以進(jìn)行賦值,this.age就是...
flutter里的方法和箭頭函數(shù)使用: 可選參數(shù)的定義:1)需要用{可選類型名字},引用的時(shí)候需要加b:3 2)加上?說明可以為空 3)可以選擇設(shè)置默認(rèn)值 4)[]里設(shè)置的是...
swift中的枚舉可以用復(fù)雜的類型如下,關(guān)聯(lián)值: 在Swift中進(jìn)行枚舉布局的時(shí)候一直是嘗試使用最少的空間來存儲(chǔ)enum,對(duì)于當(dāng)前的case數(shù)量來說,UInt8能夠表示256...
指針 為什么說指針不安全1)比如我們?cè)趧?chuàng)建一個(gè)對(duì)象的時(shí)候,是需要在堆分配內(nèi)存空間的。但是這個(gè)內(nèi)存空間的聲明周期是有限的,也就意味著如果我們使用指針指向這塊內(nèi)容空間,如果當(dāng)前內(nèi)...
函數(shù)內(nèi)聯(lián) 函數(shù)內(nèi)聯(lián)是一種編譯器技術(shù)優(yōu)化,它通過使用方法的內(nèi)容替換直接調(diào)用該方法,從而優(yōu)化性能。1)將確保有時(shí)內(nèi)聯(lián)函數(shù)。它是默認(rèn)行為,我們無需執(zhí)行任何操作,Swift編譯器可能...
異變方法 Swift中class和struct都能定義方法。但是有一點(diǎn)區(qū)別的是默認(rèn)情況下,值類型屬性不能被自身的實(shí)例方法修改。 下面代碼運(yùn)行時(shí)會(huì)報(bào)錯(cuò)的,這個(gè)是因?yàn)閟truct...
主要的不同點(diǎn)有 類有繼承的特性,而結(jié)構(gòu)體沒有類型轉(zhuǎn)換使您能夠在運(yùn)行時(shí)檢查和解釋實(shí)例的類型類有析構(gòu)函數(shù)用來釋放其分配的資源引用計(jì)數(shù)允許對(duì)一個(gè)類實(shí)例有多個(gè)引用 在類里面可以通過d...
swiftUI是聲明式,可夸平臺(tái)(macOs,tvOs,watchOS,iOS)。傳統(tǒng)的UIKit是指令式。 UIKit和swifitUI可以互相通訊 。 為什么要推出swi...
首先我們創(chuàng)建一個(gè)定時(shí)器 然后會(huì)看到其的打印,說明runloop過來了 通過調(diào)用通知,其也會(huì)調(diào)用runloop,用bt指令堆??梢钥吹?。 通過上面說明runloop無時(shí)無刻不在...
KVC被用來進(jìn)行賦值操作,下面是KVC的官方文檔介紹: 下面這些代碼是KVC進(jìn)行賦值時(shí)候,其會(huì)找set方法,然后進(jìn)行賦值操作, 如果沒有set方法,其就會(huì)找_set方法,如下...
autoreleasepool前言 下面是我們自己創(chuàng)建了一個(gè)autoreleasepool,創(chuàng)建的對(duì)象有自動(dòng)添加到自動(dòng)釋放池,和手動(dòng)添加到釋放池的。當(dāng)我們自己創(chuàng)建了autor...
我們經(jīng)常用的UIKit框架就是繼承與CoreAnimation,CoreGraphics框架。這兩個(gè)框架又依賴于OpenGL ES。CoreImage是處理圖像之前的一些操作...
在iOS里有值類型和對(duì)象,值類型不需要我們內(nèi)存管理。引用類型需要我們內(nèi)存管理是為什么呢。因?yàn)橹殿愋褪欠旁跅@铮芟到y(tǒng)管理,棧是一塊連續(xù)的內(nèi)存空間,引用類型是放在堆里的。 內(nèi)存...
架構(gòu)優(yōu)化:高內(nèi)聚,低耦合 MVC MVP :面向協(xié)議式編程 MWWM: 雙向綁定(model和view可以相互控制),可以使用ReactiveObjc里的RCAObserv...
CPU負(fù)責(zé)計(jì)算 -- > GPU負(fù)責(zé)渲染 --> frameBuffer -- > video Controller --> Monitor frameBuffer是存儲(chǔ)幀緩...
APP啟動(dòng)分為pre-main和mian兩個(gè)過程,首先我們需要進(jìn)行如下圖設(shè)置,設(shè)置DYLD_PRINT_STATISTICS為1,這樣我們就可以打印出來APP在啟動(dòng)的時(shí)候所花...
總結(jié):首先我們寫了源代碼,然后就會(huì)進(jìn)行一個(gè)預(yù)編譯,進(jìn)行預(yù)編譯就會(huì)進(jìn)行一些宏定義的展開,頭文件的展開。然后再進(jìn)行編譯,生成IR文件 ,然后生成.O文件,然后再進(jìn)行鏈接(靜態(tài)鏈接...
常見的幾種block:堆block,棧block,全局block區(qū)分原則: 1.block沒有使用外部的變量,或者只使用靜態(tài)變量 或者全局變量----全局block 2....
自旋鎖,互斥鎖,讀寫鎖自旋鎖就是一個(gè)忙等狀態(tài) do--while互斥鎖就是一個(gè)閑等,可以使得CPU進(jìn)行休眠去做別的處理 下面是iOS中所用到的鎖:執(zhí)行10萬次所用的時(shí)間 下...
首先我們來看下面一段代碼,我們發(fā)現(xiàn)運(yùn)行后這個(gè)會(huì)造成死鎖奔潰,這個(gè)原因是因?yàn)橹鞒绦驑?biāo)注1里這些代碼是放在main_queue里的,這個(gè)是串行隊(duì)列,先進(jìn)入先執(zhí)行,然后標(biāo)注2里添加...