老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)

ios開發(fā)文章,ios開發(fā)文檔

iOS開發(fā)-需要了解的Shell腳本語法

Shell 是一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁。Shell 既是一種命令語言,又是一種程序設(shè)計語言。Shell 腳本(shell script),是一種為 shell 編寫的腳本程序。在iOS開發(fā)中,我們通常編寫一些自動化的腳本文件,來提高我們的生產(chǎn)效率,其本質(zhì)就是通過Shell腳本對一些 xcodebuild , xcode-select , xcpretty , xcrun 等指令的封裝。本篇文章,我們就針對 Shell 腳本的語法,做一些羅列,以輔助我們?nèi)ネ瓿梢恍┳詣踊庋b。

成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)可克達拉,10年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

執(zhí)行腳本

.sh 文件為 Shell 腳本文件格式,通過 sh 指令執(zhí)行腳本文件

執(zhí)行結(jié)果:

1.通過 echo 輸出變量時,需要使用 $ 或者 ${} 修飾

2. (重點)定義變量時,等號之間不能有空格,不然會誤認(rèn)為變量為一個指令

3.可以直接修改 name 變量的值,即當(dāng)前 name 默認(rèn)為 readwrite 權(quán)限

4.我們給 _var 用 readonly 修飾后,再修改值會拋出異常

執(zhí)行結(jié)果:

執(zhí)行結(jié)果:

執(zhí)行結(jié)果:

執(zhí)行結(jié)果:

$@ 和 $* 都是輸出所有參數(shù),前者是 "$1" "$2" "$3" "$4" ,后者是 "$1 $2 $3 $4"

執(zhí)行結(jié)果:

注意:條件表達式要放在方括號之間,并且要有空格,例如: [$a==$b] 是錯誤的,必須寫成 [ $a == $b ] 。

關(guān)于文件檢測運算符,這里還是都羅列一下吧,比較重要:

執(zhí)行結(jié)果:

執(zhí)行結(jié)果:

執(zhí)行結(jié)果:

執(zhí)行結(jié)果:

2.有參數(shù)

執(zhí)行結(jié)果:

注意: $10 不能獲取第十個參數(shù),獲取第十個參數(shù)需要 ${10} .

使用 man 查詢 指令文檔

比如我們想查看 xcodebuild 指令下都有哪些操作,直接在終端執(zhí)行:

當(dāng)我們不清楚某一個指令下的操作時,就可以通過 man 查詢,然后輔助我們來編寫 Shell 指令。

在iOS下,了解下這些 Shell 語法就足夠了,已經(jīng)可以幫助我們完成大部分的 Shell腳本 的編寫或者閱讀別人的 Shell 源碼。不需要記憶,簡單看下就可以。

Cocoapods,讓iOS開發(fā)更簡單(三):實踐經(jīng)驗匯總

相信各位讀了之前的兩篇文章,對pods的使用已經(jīng)相當(dāng)熟練了。不過在紛繁復(fù)雜的實際使用場景下,可能還是會遇到一些問題。本文就結(jié)合自己的實踐經(jīng)驗,做一些快問快答,希望大家能多多補充交流。話不多說,那我們就即刻開始吧!

pod系列文章

Cocoapods,讓iOS開發(fā)更簡單(一):走近Cocoapods

Cocoapods,讓iOS開發(fā)更簡單(二):創(chuàng)建私有庫

Cocoapods,讓iOS開發(fā)更簡單(三):實踐經(jīng)驗匯總

一文帶你快速分清靜態(tài)庫-動態(tài)庫-Framework

一般推薦使用指定版本或范圍版本號,以確保依賴的穩(wěn)定性。

總結(jié) :能用pod install解決問題的,就不要用pod update。因為pod update會把依賴庫全部檢查一遍,不僅慢有時候還會出現(xiàn)坑。

忽略Pods警告,有些第三方Pod集成進來會有一大堆警告信息,在Podfile中對應(yīng)的target或分組下加上關(guān)鍵字inhibit_all_warnings!就可以把警告忽略。

作用:

在pods中用frameworks替代.a靜態(tài)庫。

場景:

swift項目pods默認(rèn)開啟(use_frameworks!),OC項目pods默認(rèn)關(guān)閉(#use_frameworks!),同時需滿足以下兩點,

解析:

swift工程依賴了OC工程的話,需要use_modular_headers!

示例:

為某個 Pods 使用模塊化標(biāo)頭,可以使用以下語法:

pod 'TestPodLib', :modular_headers = true

另外,當(dāng)全局使用 use_modular_headers! 屬性時,同時還可以使用以下方法從模塊化標(biāo)頭中排除特定的Pod:

pod 'TestPodLib', :modular_headers = false

版本格式:主版本號.次版本號.修訂號,版本號遞增規(guī)則如下:

常用的方式調(diào)用pod中的素材是不生效的,因為默認(rèn)是從mainBundle中讀取的,如

打在pod中的素材已經(jīng)不在mainBundle中而在對應(yīng)組件下的bundle 里面,所以應(yīng)該這么調(diào)用:

在用CocoaPods集成第三方庫之后,默認(rèn)情況下,使用類似#import XXX/YYY.h的方式引入第三方庫的頭文件。

pod search只會搜索本地緩存的庫,如果想搜索到最新的第三方框架或者某個框架的最新版本,必須先使用pod repo update。

iOS 開發(fā)中的 MVVM 模式——實用進階篇(整理)

這篇文章主要介紹了實際應(yīng)用 MVVM 的過程中的一些問題和解決方案

MVVM(Model View ViewModel)是一種 MVC(Model View Controller)的一種變型,來解決 MVC 中龐大復(fù)雜的 Controller 難以維護的問題。大致上講 MVVM 有幾個要求:

MVVM 和 MVC 有很多類似的特點,主要的不同有:

另外一點,MVVM 默認(rèn) View 和 View Controller 有一個一對一的關(guān)系,一般我們把這兩個看做一個整體,會以 .swift 文件 和 Storyboard 的形式出現(xiàn)。

View Model 的工作是處理所有的展示數(shù)據(jù)的邏輯。如果一個 model 中有一個 NSDate 對象, NSDateFormatter 就會在 View Model 中用來設(shè)置日期的展示形式。

View Model 不能接觸任何用戶界面的部分,View Model 文件中不應(yīng)該 import UIKit ,View Controller 會觀察 View Model 去了解什么時候顯示新的數(shù)據(jù)(通過 KVO 或者 FRP(Functional Reactive Programming))

MVVM 和 MVC 有一個共同的弱點:沒有清楚的定義應(yīng)該把網(wǎng)絡(luò)請求部分放在哪里。在實際操作過程中,我會把網(wǎng)絡(luò)請求放在 View Model 文件里面,但之后我打算把網(wǎng)絡(luò)請求放在自己獨立的一個類中,View Model 文件會擁有這個對象。

下面我們主要談一談實際應(yīng)用 MVVM 過程中一些挑戰(zhàn):

例如你想構(gòu)造這樣一個常用的界面,有一個 segment control 在屏幕頂部,屏幕的其他部分是一個 collection view,選擇不同的 segment,就會展示不同樣式的 collection view,元素的排列順序。我們定義了一個 enum 來枚舉所有的排列樣式:

那么這個 enum 在 MVVM 模式中應(yīng)該放在哪里呢?因為這個 enum 決定了數(shù)據(jù)排列的順序,每個 cell 中的文字和按鈕的 title,這些都屬于展示的邏輯,所以這個 enum 看起來應(yīng)該放在 view model 中。

然而,這些 layout 并不改變要展示的數(shù)據(jù),只是決定了要呈現(xiàn)的數(shù)據(jù)的排列方式和排列順序,從這個角度上來說 enum 又應(yīng)該放在 view controller 中。

我的解決方法是把 enum 放在 view model 中,然后在 view model 中加一個對外的 Observable 或者 Signal 來表示使用了哪個 layout,基于用戶選擇的 segment,view model 更新這個值,然后在 view controller 中根據(jù)相應(yīng)的 layout 改變 collection view 的樣式,view controller 也可以根據(jù)這個值來決定用哪個 cell reuse identifier

iOS 開發(fā)者在用 MVVM 和 FRP 寫應(yīng)用的時候最常見的問題可能就是 ViewModel 怎么把數(shù)據(jù)展現(xiàn)給 ViewController。當(dāng) Model 層的數(shù)據(jù)發(fā)生變化更新的時候,ViewController 需要得到通知然后做出相應(yīng)的 UI 更新,我們一般會用到兩種機制:

第一個選項很吸引人,因為可以在 View Controller 中決定怎么選擇觀察那些 property。然而,我不推薦在 Swift 中使用第一個選項,因為 Swift 在 KVO 中沒有類型檢查,你需要對 AnyObject 強制轉(zhuǎn)換類型很多次。

第二個選項是比較 Swift 的方式,基于 Swift 的 generics 特性,signals,sequences,observables 可以支持編譯過程中的類型檢查。

但有時候在 view model 增加這些 Signals 或者 Observables 有些困難。Swift 的初始化方法對于什么時候?qū)?property 賦值有非常明確的規(guī)定。Signals 或者 Observables 需要使用 view model 內(nèi)部的狀態(tài),所以它們必須在 super.init() 之后才能創(chuàng)建,但是另一方面,我們在調(diào)用 super.init() 之前保證所有 property 已經(jīng)被賦值了,包括那些 Signal/Observable property。

這是個先有雞還是先有蛋的問題。

我采用比較簡單的解決方法:定義成 var 的隱式可選類型,這樣就可以在 super.init() 之后才給 property 賦值。這不是一個完美的解決辦法。我們可以用 lazy var property 的閉包賦值來代替上面的方法。在 Swift 不斷完善和更新的過程中,大家也可以探索其他更好的辦法。

舉一個很常用的例子,用戶點擊 collection view 中的一個 cell,跳轉(zhuǎn)到詳情頁面。用戶點擊的操作應(yīng)該在 view controller 中處理,具體內(nèi)容是展現(xiàn)一個新的詳情頁面。但是 view controller 不能直接接觸 models,我們要如何用 MVVM 模式實現(xiàn)這樣的用戶交互呢?

我的解決方案是利用 Swift 的閉包。首先在 view model 中定義一個閉包:

然后在 view model 中添加一個 property:

接著我需要調(diào)用閉包,在 view model 中定義一個view controller 可以調(diào)用的函數(shù),這個函數(shù)的參數(shù)是可以決定使用什么數(shù)據(jù),一般情況下常用 index path:

現(xiàn)在當(dāng)用戶選中一個 cell,會調(diào)用 view model 中的這個函數(shù),并且傳入 index path 參數(shù),view model 決定使用哪個數(shù)據(jù),并調(diào)用在 view controller 中定義的閉包,例如:

最后一個問題是怎么創(chuàng)建這個 view model。我們需要傳遞一個閉包給view model 的初始化函數(shù),然后用 lazy loading 來調(diào)用 view model 的初始化函數(shù)。


名稱欄目:ios開發(fā)文章,ios開發(fā)文檔
分享網(wǎng)址:http://www.xueling.net.cn/article/dsejodh.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 久久精品国产99久久6动漫亮点 | 精品www日韩熟女人妻 | 欧美乱大交高潮tp121cc | 日韩欧美永久中文字幕视频 | 99资源在线 | 久久女性裸体无遮挡啪啪 | 国产女优在线观看 | 色婷丁香| 曰韩无码无遮挡A级毛片 | 亚洲精品一区二区三区精华液 | 少妇真实被内射视频三四区 | 国产激情一区二区三区成人免费 | 狠狠躁夜夜躁人人躁婷婷 | 国产伦精品一区二区三区88av | 欧美男同志网站 | 91免费网站在线观看 | 免费看片A级毛片免费看 | 免费播放的av无码 | 香港aa三级久久三级 | 99pao成人国产永久免费视频 | 国产美女裸体丝袜喷水视频 | 免费一级高清毛片 | 久久视频这里有精品 | 豪放女大兵在线播放 | 大地资源在线视频资源 | 日本男女爱爱视频 | 99久热国产精品视频尤物 | 优酷网在线观看 | jizzjizz丝袜老师 | 国产性色一区二区 | 揉着我的奶从后面进去视频 | 白浆在线播放 | 国产7座suv精品麻豆啪最新 | 国产一级视频免费 | 国产综合欧美 | 欧美激情国产精品视频一区二区 | 中文字幕无码肉感爆乳在线 | 成人资源www网在线最新版 | 邻居少妇张开腿让我爽了一夜 | 欧美午夜精品一区二区三区 | 日本黄色天堂 |