Swift 小知識(shí)點(diǎn)

  • 字符串的截取
let tempStr: String = "hello world"
// String.Index
let index = initial.index(initial.startIndex, offsetBy: 1)
tempStr.substring(to : index)
注釋:String的截取索引類型為String.Index
let tempStr: String = "hello world"
let nsstring: NSString = tempStr as NSString
nsstring.substring(to : 1)
注釋:NSString的截取索引類型為Int
  • 字符串轉(zhuǎn)為URL
 let urlStr = "http://192.168.12.146:8080/download/個(gè)人簡(jiǎn)歷.pdf"
 let url:URL = URL(string: urlStr.addingPercentEncoding(withAllowedCharacters: CharacterSet(charactersIn: "`#%^{}\"[]|\\<>").inverted)!)!
  • swift命令行模式
bogon:~ UltraPower$ swift
Welcome to Apple Swift version 3.1 (swiftlang-802.0.48 clang-802.0.48). Type :help for assistance.
  1> print("hello world")
hello world
  2> :quit
  • swift循環(huán)引用
import UIKit

class ViewController: UIViewController {
    
    var a: (() -> ())?
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //block 中如果出現(xiàn) self. 要特別小心!
        // "循環(huán)"引用,單方向的引用是不會(huì)產(chǎn)生循環(huán)引用的
        // - 只是閉包對(duì)self 進(jìn)行了copy
        // - 同時(shí)需要self對(duì)閉包引用
        
        //*******解除循環(huán)引用
        // 方法一:用oc的方法
        // 細(xì)節(jié)1:用var不用let丐吓,weak只能修飾var 不能 修飾 let
        // 'weak' must be a mutable variable, because it may change at runtime
        // weak可能會(huì)在運(yùn)行時(shí)被修改 -> 指向的對(duì)象一旦被釋放孽亲,會(huì)自動(dòng)設(shè)置為nil
        weak var weakSelf = self;
        loadData {
            // 細(xì)節(jié)2
            // 解包有兩種方式
            // ? 可選解包  如果self已經(jīng)被釋放羡棵,不會(huì)向?qū)ο蟀l(fā)送 view 的消息腮郊,更安全
            // ! 強(qiáng)行解包  如果self已經(jīng)被釋放,強(qiáng)行解包會(huì)導(dǎo)致崩潰
            // Expression implicitly coerced from 'UIView?' to Any
            
            /*
             weakSelf?.view 只是單純的發(fā)送消息,不參與計(jì)算
             強(qiáng)行解包归斤,因?yàn)樾枰?jì)算,可選項(xiàng)不能直接參與計(jì)算
             */
            print(weakSelf?.view);
        }
        
        
        //方法2 - swift的推薦方法
        //[weak self] 表示 () 中的所有 self 都為弱引用
        loadData { [weak self] in
            print(self?.view as Any);
        }
        
        // 方法3 - swift的另一種方法刁岸,知道就好脏里,不安全
        // [unowned self] 表示 () 中的所有 self 都為assign, 不會(huì)強(qiáng)引用虹曙,如果對(duì)象釋放迫横,指針地址依然存在
        // 如果對(duì)象釋放番舆, 會(huì)出現(xiàn)野指針的現(xiàn)象
        loadData { [unowned self] in
            print(self.view);
        }
    }
    
    func loadData(bibao: @escaping () -> ()) {
        // 使用屬性記錄閉包 -> self 對(duì)閉包引用
        // 在閉包中使用閉包需要使用逃逸閉包@escaping
        a = bibao;
        
        //異步
        DispatchQueue.global().async {
            print("1111");
            
            Thread.sleep(forTimeInterval: 2);
            
            DispatchQueue.main.async(execute: {
                print("2222");
                bibao();
            })
        }
        
    }
    
    deinit {
        print("qqqqq");
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市矾踱,隨后出現(xiàn)的幾起案子恨狈,更是在濱河造成了極大的恐慌,老刑警劉巖呛讲,帶你破解...
    沈念sama閱讀 211,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件禾怠,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡贝搁,警方通過查閱死者的電腦和手機(jī)吗氏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來雷逆,“玉大人弦讽,你說我怎么就攤上這事」孛妫” “怎么了坦袍?”我有些...
    開封第一講書人閱讀 157,435評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長等太。 經(jīng)常有香客問我,道長蛮放,這世上最難降的妖魔是什么缩抡? 我笑而不...
    開封第一講書人閱讀 56,509評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮包颁,結(jié)果婚禮上瞻想,老公的妹妹穿的比我還像新娘。我一直安慰自己娩嚼,他們只是感情好蘑险,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著岳悟,像睡著了一般佃迄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贵少,一...
    開封第一講書人閱讀 49,837評(píng)論 1 290
  • 那天呵俏,我揣著相機(jī)與錄音,去河邊找鬼滔灶。 笑死普碎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的录平。 我是一名探鬼主播麻车,決...
    沈念sama閱讀 38,987評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼缀皱,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了动猬?” 一聲冷哼從身側(cè)響起啤斗,我...
    開封第一講書人閱讀 37,730評(píng)論 0 267
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎枣察,沒想到半個(gè)月后争占,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,194評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡序目,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評(píng)論 2 327
  • 正文 我和宋清朗相戀三年臂痕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片猿涨。...
    茶點(diǎn)故事閱讀 38,664評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡握童,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出叛赚,到底是詐尸還是另有隱情澡绩,我是刑警寧澤,帶...
    沈念sama閱讀 34,334評(píng)論 4 330
  • 正文 年R本政府宣布俺附,位于F島的核電站肥卡,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏事镣。R本人自食惡果不足惜步鉴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望璃哟。 院中可真熱鬧氛琢,春花似錦、人聲如沸随闪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铐伴。三九已至撮奏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盛杰,已是汗流浹背挽荡。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留即供,地道東北人定拟。 一個(gè)月前我還...
    沈念sama閱讀 46,389評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親青自。 傳聞我的和親對(duì)象是個(gè)殘疾皇子株依,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評(píng)論 2 349

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)延窜,斷路器恋腕,智...
    卡卡羅2017閱讀 134,633評(píng)論 18 139
  • Swift 介紹 簡(jiǎn)介 Swift 語言由蘋果公司在 2014 年推出,用來撰寫 OS X 和 iOS 應(yīng)用程序 ...
    大L君閱讀 3,201評(píng)論 3 25
  • 前言: 作為一個(gè)水平一般逆瑞,沒有追求的OC開發(fā)者荠藤,從swift1.0開始就買了幾本swift參考書,直到現(xiàn)在swi...
    PrinceMei閱讀 493評(píng)論 0 2
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫获高、插件哈肖、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,066評(píng)論 4 62
  • ##餐后 ###餐后
    Baohou閱讀 291評(píng)論 0 0