美文网首页
自己写的一些笔记二

自己写的一些笔记二

作者: 大斑马小斑马 | 来源:发表于2017-06-04 15:45 被阅读0次

    这个采用markdown 的形式来写

    as as? as! 的区别和用法。网上一些逗逼。写的毛玩意啊 就知道copy 粘贴 和猪 有什么区别 ,猪不能随便变成人, 而他们隔三差五就便成猪, 例子才是最好的老师 真是一群猪

    as 用法

            // as 用法 1
            let str:String = "www.shuaige.com"
            //( str as NSString)   这样 str 从String 转变成 NSString 类型 所有才能调用OC的这个方法 .substring(to:  Int)
            // (str as NSString).substring(to: 3)  返回的还是 String 类型
            let subStr = (str as NSString).substring(to: 3)
    
            // as 用法 2
            // 这个很明显是类型推导 如果赋值的时候字典元素存储的值的类型不一样  需要转换成字典 as [String : Any]  字典的类型就变成了 [String : Any]  类型
            let dict1 = ["name":"tianbin","age":19,"height":1.88] as [String : Any]
    

    as! 用法

    // 1.使用数组保存信息    数组的第一个元素很明显是String 类型 但是整个数组是 [Any] 类型
    let infoArr:[Any] = ["tianbinbin",27,185]
    
    //  infoArr[0]  通过as! 从任意类型 转换成String 类型
    let nameStr = infoArr[0] as! String
    
    // as! 的用法。转成具体类型  
    // 注意:如果转换不成功 那么程序会崩溃
    // 建议: 如果确定转换成功 在用as! 平时不建议
    

    as?

            // as? as!
            let dict :[String:Any] = ["name":"tianbin","age":18,"height":1.98]
            let name = dict["name"]
            // 通过 as? 转成可选类型
            // as? : 转成的类型是一个可选类型,系统会自动判断name 是否可以转成String?,如果可以转成,那么可以获取字符串 如果不能转成 那么设置为nil
            let tempName = name as? String
            // 第一种写法
            if let tempname = tempName {
                print(tempname)
            }
           // 第二种写法
            if let tempname = dict["name"] as? String {
                print(tempname)
            }
    

    autoresizingMask = UIViewAutoresizingNone 这个用法在swift 3.0 失效了 ???

    @escaping. 逃逸 闭包 的用法 先记着 后续我查一下

    swift 运行时机制

            今天学习到一个新的东西  比如说当我们需要截取系统的某一个方法的时候 比如 我们pushviewcontroller 的时
    候 可以滑动屏幕左侧 一小块区域实现滑动返回,但是如果要让你实现滑动屏幕任意一个地方都能实现返回,并且不是单单是一
    个屏幕,整个app 都能实现滑动返回,我以前写我们的项目的时候是在window 上添加了一个手势view 实现的,但是又一个
    很大的弊端,手势冲突 比如和scrollview tableview collectionview 以及你自己添加的手势 这样修改起来特别麻烦 
    ,今天我学习到了一个新的方法 我们可以拿到系统的pop 手势 拿到pop 就代表能拿到view 毕竟pop是添加带view 上的
     然后我们需要拿到 target 和 action。而系统有些方法和属性是没有暴露出来的,这时候我们可以用运行时机制
    去查找对应的方法 action 和 target  这里呢  我们可以通过属性的类型查看所有的属性名称(系统有些属性名称没有暴露
    给我们,所以我们看不到,这时候可以去遍历)  我最近在写斗鱼直播 因为用的是swift3.0  所以我就直接用swift 介绍
    了 oc 的是一样的 如果你回swift 那么 oc 也会用 如果不会 那么请百度一下关键字也能用
      
            //1. 获取系统的pop 手势
            guard let sysetmGes = interactivePopGestureRecognizer else {return}
            
            //2. 获取手势添加到的view中
            guard let gestView = sysetmGes.view else { return }
            
            //3. 获取系统 target action
            //3.1 利用运行时机制 查看所有的属性名称
            // 系统没有把一个属性暴露给我们 而我们又想用它 就是通过截取
            
            
            var count:UInt32 = 0
            // 通过属性类型 遍历所有的属性名称 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. 将指针转换成字符串
                print(String(cString: name!))
            }
    
     如果你看到这里对这个很感兴趣,但是还不是很明白 可以参考我的斗鱼直播地址:https://github.com/tianbinbin/DouYuShow  
    控制器为CustomViewController 这里有完整的代码 欢迎点赞
    

    1.0 JS 交互

    今天有人问我 JS 交互 时间长了有点淡了 所以重新复习一下
        // 1. 原生交互 这个库是apple iOS7 之后推出来的库 实现网页与原生的交互问题
               #import <JavaScriptCore/JavaScriptCore.h>
    
    1.0 初始化webview 对象
    - (void)viewDidLoad {
        [super viewDidLoad];
        self.title = @"js and Native";
    
        // 2. 创建webview 对象
        self.CustomwebView=[[UIWebView alloc]initWithFrame:self.view.bounds];
        self.CustomwebView.delegate=self;
        //添加webview到当前viewcontroller的view上
        [self.view addSubview:self.CustomwebView];
        
        //网址
        NSString *httpStr=@"https://www.baidu.com";
        NSURL *httpUrl=[NSURL URLWithString:httpStr];
        NSURLRequest *httpRequest=[NSURLRequest requestWithURL:httpUrl];
        [self.CustomwebView loadRequest:httpRequest];
    }
    
    1.5 webview 有四个代理. 感觉写起来还是比较麻烦 还是参考我的github 我已简单演示了一下。看代码的 会更容易理解 有详细的注释 不会让你失望的github:https://github.com/tianbinbin/JS-OC
    2.0 小知识点
        NSString * str1 = @"tianbin";
        NSString * str2 = @"tianbin";
        if(str1 == str2){
            NSLog(@" == 成立  %p ----- %p",str1,str2);
        }
        if([str1 isEqualToString:str2])
        {
            NSLog(@" isEqualToString 成立 ");
        }
    这两种情况都成立 值一样 存储的地址一样
    输出结果
    == 成立  0x1074aa2e8 ----- 0x1074aa2e8
    

    3.0. ApplePay

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

    目前ApplePay 支持iphone6 以上 ios8(最好ios9)以上。ApplePay 线上线下都能支付 注意:可以支付的时候可以无需联网,这点微信、支付宝是不行的,ApplePay 是基于NFC 环境下的 微信、支付宝是基于二维码 相比于他们ApplePay 更好 更简单

    4.0 Apple In purchasing 苹果内购

    4.1 链接到 iTunes Connect -> 选择协议、税务和银行业务 具体呢参考网络上的这里我就不写了 参考github:http://www.jianshu.com/p/86ac7d3b593a 然后你需要在 我的App内添加 app 购买的项目 包含 参考名称 类型 产品ID 别忘了在用户和职能里面添加测试账号
    AppleInPurchasing.png

    具体的Apple In purchasing 的代码 我上传到GitHub:晚上回去上传

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

    相关文章

      网友评论

          本文标题:自己写的一些笔记二

          本文链接:https://www.haomeiwen.com/subject/tinvfxtx.html