自己寫(xiě)的一些筆記二

這個(gè)采用markdown 的形式來(lái)寫(xiě)

as as? as! 的區(qū)別和用法。網(wǎng)上一些逗逼。寫(xiě)的毛玩意啊 就知道copy 粘貼 和豬 有什么區(qū)別 ,豬不能隨便變成人, 而他們隔三差五就便成豬, 例子才是最好的老師 真是一群豬

as 用法

        // as 用法 1
        let str:String = "www.shuaige.com"
        //( str as NSString)   這樣 str 從String 轉(zhuǎn)變成 NSString 類(lèi)型 所有才能調(diào)用OC的這個(gè)方法 .substring(to:  Int)
        // (str as NSString).substring(to: 3)  返回的還是 String 類(lèi)型
        let subStr = (str as NSString).substring(to: 3)

        // as 用法 2
        // 這個(gè)很明顯是類(lèi)型推導(dǎo) 如果賦值的時(shí)候字典元素存儲(chǔ)的值的類(lèi)型不一樣  需要轉(zhuǎn)換成字典 as [String : Any]  字典的類(lèi)型就變成了 [String : Any]  類(lèi)型
        let dict1 = ["name":"tianbin","age":19,"height":1.88] as [String : Any]

as! 用法

// 1.使用數(shù)組保存信息    數(shù)組的第一個(gè)元素很明顯是String 類(lèi)型 但是整個(gè)數(shù)組是 [Any] 類(lèi)型
let infoArr:[Any] = ["tianbinbin",27,185]

//  infoArr[0]  通過(guò)as! 從任意類(lèi)型 轉(zhuǎn)換成String 類(lèi)型
let nameStr = infoArr[0] as! String

// as! 的用法。轉(zhuǎn)成具體類(lèi)型  
// 注意:如果轉(zhuǎn)換不成功 那么程序會(huì)崩潰
// 建議: 如果確定轉(zhuǎn)換成功 在用as! 平時(shí)不建議

as?

        // as? as!
        let dict :[String:Any] = ["name":"tianbin","age":18,"height":1.98]
        let name = dict["name"]
        // 通過(guò) as? 轉(zhuǎn)成可選類(lèi)型
        // as? : 轉(zhuǎn)成的類(lèi)型是一個(gè)可選類(lèi)型,系統(tǒng)會(huì)自動(dòng)判斷name 是否可以轉(zhuǎn)成String?,如果可以轉(zhuǎn)成,那么可以獲取字符串 如果不能轉(zhuǎn)成 那么設(shè)置為nil
        let tempName = name as? String
        // 第一種寫(xiě)法
        if let tempname = tempName {
            print(tempname)
        }
       // 第二種寫(xiě)法
        if let tempname = dict["name"] as? String {
            print(tempname)
        }

autoresizingMask = UIViewAutoresizingNone 這個(gè)用法在swift 3.0 失效了 ???

@escaping. 逃逸 閉包 的用法 先記著 后續(xù)我查一下

swift 運(yùn)行時(shí)機(jī)制

        今天學(xué)習(xí)到一個(gè)新的東西  比如說(shuō)當(dāng)我們需要截取系統(tǒng)的某一個(gè)方法的時(shí)候 比如 我們pushviewcontroller 的時(shí)
候 可以滑動(dòng)屏幕左側(cè) 一小塊區(qū)域?qū)崿F(xiàn)滑動(dòng)返回,但是如果要讓你實(shí)現(xiàn)滑動(dòng)屏幕任意一個(gè)地方都能實(shí)現(xiàn)返回,并且不是單單是一
個(gè)屏幕,整個(gè)app 都能實(shí)現(xiàn)滑動(dòng)返回,我以前寫(xiě)我們的項(xiàng)目的時(shí)候是在window 上添加了一個(gè)手勢(shì)view 實(shí)現(xiàn)的,但是又一個(gè)
很大的弊端,手勢(shì)沖突 比如和scrollview tableview collectionview 以及你自己添加的手勢(shì) 這樣修改起來(lái)特別麻煩 
,今天我學(xué)習(xí)到了一個(gè)新的方法 我們可以拿到系統(tǒng)的pop 手勢(shì) 拿到pop 就代表能拿到view 畢竟pop是添加帶view 上的
 然后我們需要拿到 target 和 action。而系統(tǒng)有些方法和屬性是沒(méi)有暴露出來(lái)的,這時(shí)候我們可以用運(yùn)行時(shí)機(jī)制
去查找對(duì)應(yīng)的方法 action 和 target  這里呢  我們可以通過(guò)屬性的類(lèi)型查看所有的屬性名稱(chēng)(系統(tǒng)有些屬性名稱(chēng)沒(méi)有暴露
給我們,所以我們看不到,這時(shí)候可以去遍歷)  我最近在寫(xiě)斗魚(yú)直播 因?yàn)橛玫氖莝wift3.0  所以我就直接用swift 介紹
了 oc 的是一樣的 如果你回swift 那么 oc 也會(huì)用 如果不會(huì) 那么請(qǐng)百度一下關(guān)鍵字也能用
  
        //1. 獲取系統(tǒng)的pop 手勢(shì)
        guard let sysetmGes = interactivePopGestureRecognizer else {return}
        
        //2. 獲取手勢(shì)添加到的view中
        guard let gestView = sysetmGes.view else { return }
        
        //3. 獲取系統(tǒng) target action
        //3.1 利用運(yùn)行時(shí)機(jī)制 查看所有的屬性名稱(chēng)
        // 系統(tǒng)沒(méi)有把一個(gè)屬性暴露給我們 而我們又想用它 就是通過(guò)截取
        
        
        var count:UInt32 = 0
        // 通過(guò)屬性類(lèi)型 遍歷所有的屬性名稱(chēng) ivars保存的是所有屬性的地址
        let ivars = class_copyIvarList(UIGestureRecognizer.self, &count)
        
        for i in 0..<count{
            let ivar = ivars?[Int(i)]
            //1. 獲取屬性的名字
            let name = ivar_getName(ivar)
            //2. 將指針轉(zhuǎn)換成字符串
            print(String(cString: name!))
        }

 如果你看到這里對(duì)這個(gè)很感興趣,但是還不是很明白 可以參考我的斗魚(yú)直播地址:https://github.com/tianbinbin/DouYuShow  
控制器為CustomViewController 這里有完整的代碼 歡迎點(diǎn)贊

1.0 JS 交互

今天有人問(wèn)我 JS 交互 時(shí)間長(zhǎng)了有點(diǎn)淡了 所以重新復(fù)習(xí)一下
    // 1. 原生交互 這個(gè)庫(kù)是apple iOS7 之后推出來(lái)的庫(kù) 實(shí)現(xiàn)網(wǎng)頁(yè)與原生的交互問(wèn)題
           #import <JavaScriptCore/JavaScriptCore.h>
1.0 初始化webview 對(duì)象
- (void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"js and Native";

    // 2. 創(chuàng)建webview 對(duì)象
    self.CustomwebView=[[UIWebView alloc]initWithFrame:self.view.bounds];
    self.CustomwebView.delegate=self;
    //添加webview到當(dāng)前viewcontroller的view上
    [self.view addSubview:self.CustomwebView];
    
    //網(wǎng)址
    NSString *httpStr=@"https://www.baidu.com";
    NSURL *httpUrl=[NSURL URLWithString:httpStr];
    NSURLRequest *httpRequest=[NSURLRequest requestWithURL:httpUrl];
    [self.CustomwebView loadRequest:httpRequest];
}
1.5 webview 有四個(gè)代理. 感覺(jué)寫(xiě)起來(lái)還是比較麻煩 還是參考我的github 我已簡(jiǎn)單演示了一下??创a的 會(huì)更容易理解 有詳細(xì)的注釋 不會(huì)讓你失望的github:https://github.com/tianbinbin/JS-OC
2.0 小知識(shí)點(diǎn)
    NSString * str1 = @"tianbin";
    NSString * str2 = @"tianbin";
    if(str1 == str2){
        NSLog(@" == 成立  %p ----- %p",str1,str2);
    }
    if([str1 isEqualToString:str2])
    {
        NSLog(@" isEqualToString 成立 ");
    }
這兩種情況都成立 值一樣 存儲(chǔ)的地址一樣
輸出結(jié)果
== 成立  0x1074aa2e8 ----- 0x1074aa2e8

3.0. ApplePay

3.1 ApplePay 相比于支付寶支付和微信支付有什么不同?

目前ApplePay 支持iphone6 以上 ios8(最好ios9)以上。ApplePay 線上線下都能支付 注意:可以支付的時(shí)候可以無(wú)需聯(lián)網(wǎng),這點(diǎn)微信、支付寶是不行的,ApplePay 是基于NFC 環(huán)境下的 微信、支付寶是基于二維碼 相比于他們ApplePay 更好 更簡(jiǎn)單

4.0 Apple In purchasing 蘋(píng)果內(nèi)購(gòu)

4.1 鏈接到 iTunes Connect -> 選擇協(xié)議、稅務(wù)和銀行業(yè)務(wù) 具體呢參考網(wǎng)絡(luò)上的這里我就不寫(xiě)了 參考github:http://www.lxweimin.com/p/86ac7d3b593a 然后你需要在 我的App內(nèi)添加 app 購(gòu)買(mǎi)的項(xiàng)目 包含 參考名稱(chēng) 類(lèi)型 產(chǎn)品ID 別忘了在用戶和職能里面添加測(cè)試賬號(hào)
AppleInPurchasing.png

具體的Apple In purchasing 的代碼 我上傳到GitHub:晚上回去上傳

http://www.2cto.com/kf/201504/389224.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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