swift使用相關(guān)技術(shù)要點

swift項目工程搭建

swift常用框架

SnapKit

swift運行問題

The run destination hh的iPhone is not valid for Running the scheme 'appdemo'.
hh2的iPhone’s iOS 14.1 doesn’t match appdemo’s iOS 15.2 deployment target. Upgrade hh的iPhone’s iOS version or lower appdemo’s deployment target.

  • 處理:
    全局找到所有deployment的部分拔第,設(shè)置版本為13以上(因為最新的工程都加入了UIScene雌续,13.0才出來的)
Could not launch “appdemo”
The operation couldn’t be completed. Unable to launch com.app.demo because it has an invalid code signature, inadequate entitlements or its profile has not been explicitly trusted by the user.
  • 處理:需要在手機設(shè)置-通用-設(shè)備管理:信任開發(fā)者賬號

swift error

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Pushing a navigation controller is not supported'

swift UITabBarController

swift UITabBarController再push一個頁面會被tabbar遮擋

swift問題

Initializer for conditional binding must have Optional type, not 'MineModelData'
Property 'self.label' not initialized at super.init call
Cannot find 'MineReuseIdentifier' in scope
Value of type 'UITableViewCell' has no member 'updateCell'
  • 原因:UITableViewCell使用不對

Alamofire

swift extension

swift class/struct

  • struct和class區(qū)別

    • 相同點:
      1.定義屬性用于存儲值 (property)
      2.定義方法用于提供功能 (function)
      3.定義下標操作使得可以通過下標語法來訪問實例所包含的值 (subscript)
      4.定義構(gòu)造器用于生成初始化值 (initializers)
      5.通過擴展以增加默認實現(xiàn)的功能 (extension)
      6.實現(xiàn)協(xié)議以提供某種標準功能 (protocol)

    • 不同點:
      1.class是引用類型;struct是值類型
      2.class支持繼承淳梦;struct不支持繼承
      3.class聲明的方法修改屬性時不需要mutating關(guān)鍵字;struct需要
      4.class中每一個成員變量都必須被初始化昔字,否則編譯器會報錯爆袍,而struct不需要,編譯器會自動幫我們生成init函數(shù)作郭,給變量賦一個默認值
      5.class支持引用計數(shù)(reference counting)(允許對一個類的多次引用)陨囊,struct不支持
      6.class支持type casting(類型轉(zhuǎn)換)(允許在運行時檢查和解釋一個類實例的類型),struct不支持
      7.class支持deinitializers(析構(gòu)器)(允許一個類實例釋放任何其所被分配的資源)夹攒,struct不支持
      8.變量賦值方式不同(深淺copy)蜘醋,class淺拷貝,struct深拷貝咏尝,class的賦值是傳遞引用压语,struct則是copy傳值,不是使用引用計數(shù)啸罢。
      9.內(nèi)存管理:struct存儲在stack中,class存儲在heap中胎食、
      10.方法派發(fā)方式:struct的方法調(diào)用是靜態(tài)綁定扰才,而class的方法調(diào)用是動態(tài)實現(xiàn)

  • 參考:
    https://www.cnblogs.com/beckwang0912/p/8508299.html

swift public/private/open

  • swift public/private/open/internal/fileprivate
    Swift文件權(quán)限:open/public/internal/private/fileprivate區(qū)別,默認權(quán)限internal
    1)private 訪問級別所修飾的屬性或者方法只能在當前類里訪問厕怜。
    2)fileprivate 訪問級別所修飾的屬性或者方法在當前的 Swift 源文件里可以訪問训桶。
    3)internal 訪問級別所修飾的屬性或方法在源代碼所在的整個模塊都可以訪問。
    如果是框架或者庫代碼酣倾,則在整個框架內(nèi)部都可以訪問舵揭,框架由外部代碼所引用時,則不可以訪問躁锡。
    如果是 App 代碼午绳,也是在整個 App 代碼,也是在整個 App 內(nèi)部可以訪問映之。
    4)public可以被任何人訪問拦焚。但其他 module 中不可以被 override 和繼承,而在 module 內(nèi)可以被 override 和繼承杠输。
    5)open可以被任何人使用赎败,包括 override 和繼承。

  • 參考:
    https://blog.csdn.net/chenyong05314/article/details/116267430

getTopViewController

swift宏定義

swift @available / #available

swift: Type of expression is ambiguous without more context

UIApplication.shared.windows.statusBarManager?.statusBarFrame.size.height

swift: cast error

Cast from 'AnyClass?' (aka 'Optional<AnyObject.Type>') to unrelated type 'ViewController' always fails

swift: compiler error

error: Segmentation fault: 11 (in target 'app-demo-ios' from project 'app-demo-ios)
: The Legacy Build System will be removed in a future release. You can configure the selected build system and this deprecation message in File > Workspace Settings.

  • 處理:這個地方跟Legacy Build System設(shè)置沒有關(guān)系。
    是和變量定義和if let等判斷錯誤有關(guān)鹦牛。

  • 參考:
    https://zhuanlan.zhihu.com/p/245086610

swift No exact matches in call to initializer

Initializer for conditional binding must have Optional type, not 'ViewController'

swift as:swift強制類型轉(zhuǎn)換

Cannot convert value of type 'SettingsViewController' to type 'ViewController' in coercion

swift lazy

swift button

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'NSLayoutConstraint for <UIButton: 0x104f06110; frame = (0 0; 0 0); opaque = NO; layer = <CALayer: 0x2820b4d80>>: A multiplier of 0 or a nil second item together with a location for the first attribute creates an illegal constraint of a location equal to a constant. Location attributes must be specified in pairs.'

  • 原因:按鈕初始化時未給frame

swift 獲取safearea

swift ==和===

UIWindow:swift添加到UIWindow

[[UIApplication sharedApplication].keyWindow addSubview:label];

swift dispatch

swift/oc

  • swift與oc區(qū)別
    1.swift是靜態(tài)語言,有類型推斷曼追,OC是動態(tài)語言窍仰。
    2.swift面向協(xié)議編程,OC面向?qū)ο缶幊?br> 3.swift注重值類型礼殊,OC注重引用類型驹吮。
    4.swift支持泛型,OC只支持輕量泛型
    5.swift支持靜態(tài)派發(fā)(效率高)晶伦、動態(tài)派發(fā)(函數(shù)表派發(fā)碟狞、消息派發(fā))方式,OC支持動態(tài)派發(fā)(消息派發(fā))方式坝辫。
    6.swift支持函數(shù)式編程
    7.swift的協(xié)議不僅可以被類實現(xiàn)篷就,也可以被struct和enum實現(xiàn)
    8.swift有元組類型、支持運算符重載
    9.swift支持命名空間
    10.swift支持默認參數(shù)
    11.swift比oc代碼更加簡潔

  • 參考:
    http://www.reibang.com/p/3b7f3f596bcb

keyWindow

'keyWindow' was deprecated in iOS 13.0: Should not be used for applications that support multiple scenes as it returns a key window across all connected scenes

Alamofire:響應(yīng)日志

sy.ak: login response: failure(Alamofire.AFError.responseSerializationFailed(reason: Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(error: Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=Invalid value around character 0.})))

Generic parameter 'T' could not be inferred

無法推斷泛型參數(shù)'T'

網(wǎng)絡(luò)連接:日志

sy.ak: login response.result: failure(Alamofire.AFError.sessionTaskFailed(error: Error Domain=NSURLErrorDomain Code=-1022 "The resource could not be loaded because the App Transport Security policy requires the use of a secure connection." UserInfo={NSLocalizedDescription=The resource could not be loaded because the App Transport Security policy requires the use of a secure connection., NSErrorFailingURLStringKey=http://upgrade.31truck.com:5247/pkg/check?version=13.2.16&os=Android&env=development&bundleId=com.app.demo&containerVersion=13.2.16, NSErrorFailingURLKey=http://upgrade.31truck.com:5247/pkg/check?version=13.2.16&os=Android&env=development&bundleId=com.app.demo&containerVersion=13.2.16, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalDataTask <2215D0AC-BF6A-4543-AB54-B64A0A9ACE72>.<2>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <2215D0AC-BF6A-4543-AB54-B64A0A9ACE72>.<2>, NSUnderlyingError=0x2818a6160 {Error Domain=kCFErrorDomainCFNetwork Code=-1022 "(null)"}}))

  • 原因:應(yīng)該是沒有在info.plist中申請網(wǎng)絡(luò)權(quán)限

  • 處理:
    App Transport Security Settings
    設(shè)置Allow Arbitrary Loads為YES

import Kingfisher

crypto導(dǎo)入swift

swift Digest

Xcode remove Package Dependencies

swift WKWebView

swift輪播圖

PageMenuView:swift可以來回切的有tab的view

UIViewController 初始化錯誤

Must call a designated initializer of the superclass 'UIViewController'

定義屬性時 初始化錯誤

Property 'self.widthConstraint' not initialized at super.init call
  • 處理:有兩種方式
    一是:在調(diào)用super.init之前設(shè)置self.widthConstraint
    二是如下定義:
    fileprivate var widthConstraint: NSLayoutConstraint!
    注意:第二種方式最后有一個感嘆號,如果沒有就會報上面的錯誤

  • 參考:
    http://www.reibang.com/p/bbd7774550d2

swift布局:錯誤

*** Terminating app due to uncaught exception 'NSGenericException', reason: 'Unable to activate constraint with anchors <NSLayoutYAxisAnchor:0x280405780 "app_demo_ios.MenuView:0x108014e00.top"> and <NSLayoutYAxisAnchor:0x280407800 "UIView:0x10780a000.top"> because they have no common ancestor.  Does the constraint or its anchors reference items in different view hierarchies?  That's illegal.'

SwiftyJSON

git

swift DataResponse

response.value:Optional(<__NSArrayI 0x281146730>(

escaping

Escaping closure captures non-escaping parameter 'callback'
Initializer for conditional binding must have Optional type, not 'HomeBannerModel'

處理:注意if和guard判斷的變量都需要是optional類型智润,即可選類型

Expected parameter name followed by ':'
  • 處理:這個和閉包的參數(shù)設(shè)置有關(guān)系
'nil' is not compatible with expected argument type 'HomeRecommendModel'

weak unowned的區(qū)別

  • Unowned 引用,像weak引用一樣未辆,不會增加對象的引用計數(shù)窟绷。

  • 在引用對象的生命周期內(nèi),如果它可能為nil咐柜,那么就用weak引用兼蜈。反之,當你知道引用對象在初始化后永遠都不會為nil就用unowned拙友。

  • 參考:
    http://www.reibang.com/p/bb321f256b58

swift的派發(fā)機制:

  • swift的派發(fā)機制:
  1. 函數(shù)的派發(fā)機制:靜態(tài)派發(fā)(直接派發(fā))为狸、函數(shù)表派發(fā)、消息派發(fā)
  2. swift派發(fā)機制總結(jié):
    ● swift中所有值類型:struct遗契、enum使用直接派發(fā)
    ● swift中協(xié)議的extensions(類似于OC的分類)使用直接派發(fā)辐棒,初始聲明函數(shù)使用函數(shù)表派發(fā)
    ● swift中class的extensions使用直接派發(fā),初始化聲明函數(shù)使用函數(shù)表派發(fā)牍蜂,dynamic修飾的函數(shù)使用消息派發(fā)
    ● swift中NSObject的子類用@nonobjc或final修飾的函數(shù)使用直接派發(fā)漾根,初始聲明函數(shù)使用函數(shù)表派發(fā),dynamic修飾的extensions使用消息派發(fā)
  3. swift中函數(shù)派發(fā)查看方式:可將swift代碼轉(zhuǎn)換為SIL(中間碼)
    swiftc -emit-silgen -O example.swift

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鲫竞,一起剝皮案震驚了整個濱河市辐怕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌从绘,老刑警劉巖寄疏,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異顶考,居然都是意外死亡赁还,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門驹沿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蹈胡,你說我怎么就攤上這事渊季。” “怎么了罚渐?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵却汉,是天一觀的道長。 經(jīng)常有香客問我荷并,道長合砂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任源织,我火速辦了婚禮翩伪,結(jié)果婚禮上微猖,老公的妹妹穿的比我還像新娘。我一直安慰自己缘屹,他們只是感情好凛剥,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著轻姿,像睡著了一般犁珠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上互亮,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天犁享,我揣著相機與錄音,去河邊找鬼豹休。 笑死饼疙,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的慕爬。 我是一名探鬼主播窑眯,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼医窿!你這毒婦竟也來了磅甩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤姥卢,失蹤者是張志新(化名)和其女友劉穎卷要,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體独榴,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡僧叉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了棺榔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓶堕。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖症歇,靈堂內(nèi)的尸體忽然破棺而出郎笆,到底是詐尸還是另有隱情,我是刑警寧澤忘晤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布宛蚓,位于F島的核電站,受9級特大地震影響设塔,放射性物質(zhì)發(fā)生泄漏凄吏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望痕钢。 院中可真熱鬧图柏,春花似錦、人聲如沸盖喷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽课梳。三九已至距辆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間暮刃,已是汗流浹背跨算。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留椭懊,地道東北人诸蚕。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像氧猬,于是被迫代替她去往敵國和親背犯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容