自己写的一些笔记二

2017-06-04  本文已影响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

上一篇下一篇

猜你喜欢

热点阅读