• iOS9 新特性总结!!!


    #iOS9 新特新介绍

    ##一. UIStackView

    * 新控件:UIStackView 栈视图, 类似AppleWatch的Group

    * 父类:UIView

    * 特点:

    1. 只能垂直或水平散列,因此不能完全取代Autolayout

    2. 能够快速的按顺序获取到子控件

    3. 批量修改间距更快

    4. 批量修改对齐方式更快

    *应用场景:

    1. 水平-标签/自定义TabBar

    2. 垂直-设置菜单

    ##二. SafariServices

    '' SFSafariViewController *safariVC = [[SFSafariViewController alloc] initWithURL:[NSURL URLWithString:@"https://www.baidu.com"]];

    ''

    '' [self.navigationController pushViewController:safariVC animated:YES];

    Q:什么时候使用Safari Services Framework?什么时候使用WebView?

    A:当我们的app需要显示网页内容,但是又不需要自定义这些内容的时候,直接使用SF,省事

    ##三. iOS9快速适配

    1. 网络适配

    * 服务器适配 http https

    * plist配置(使用不安全的http协议网络请求)

    '' iOS9中把所有的http请求都改为了https。目的当时是为了增加安全性。

    '' http相当于在和服务器沟通的过程中使用的是明文。

    '' https相当于在和服务器沟通的过程中使用的是加密的数据。

    '' 明文的通信也就是不加密的通信容易造成一些风险。比如:窃听,冒充,篡改

    1. 在Info.plist中添加 NSAppTransportSecurity 类型 Dictionary

    2. 在 NSAppTransportSecurity 下添加 NSAllowsArbitraryLoads 类型Boolean ,值设为 YES

    2. 应用间跳转 -- 分享

    * iOS9新增了方法, 用于处理应用间跳转

    * 增加了plist列表的键值对, 要跳转, 必须添加信任

    增加键LSApplicationQueriesSchemes, 然后修改成Array, 点击+号添加item, 放入要跳转的URLScheme

    ##四. iOS9新语法

    1. Nullability 为空性标记

    * Xcode6.3时推出的

    * 类似swift的?和!, 可为空:__nullable / nullable, 不能为空:__nonnull / nonnull

    * 意义: 看到nullable, 就进行判空处理

    * 大部分都为nonnull, 有宏定义方便使用:NS_ASSUME_NONNULL_BEGIN 和 NS_ASSUME_NONNULL_END

    * 编译器层面- 没有改变系统的底层, 类似ARC-编译期

    2. Lightweight Generics 轻量级泛型

    * 可以指定容器类中对象的类型了

    NSArray<NSString *> *strings = @[@"dong", @“peng”];

    NSDictionary<NSString *, NSNumber *> *mapping = @{@"a": @1, @"b": @2};

    *  意义: 不用多想就清楚下面的数组中存的是什么,避免了跳转头文件及类型使用错误混乱。

    * 纯编译器的语法支持(llvm 7.0),和 Nullability 一样,没有借助任何 objc runtime 的升级,也就是说,这个新语法在 Xcode 7 上可以使用且完全向下兼容(更低的 iOS 版本)

    三. __kindof

    1. 既明确表明了返回值,又让使用者不必写强转。

    - (__kindof UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier;

    范例: 使用时前面基本会使用 UITableViewCell 子类型的指针来接收返回值,所以这个 API 为了让开发者不必每次都蛋疼的写显式强转,把返回值定义成了 id 类型,

        而这个 API 实际上的意思是返回一个 UITableViewCell 或 UITableViewCell 子类的实例

    2. 再举个带泛型的例子,UIView 的 subviews 属性被修改成了:

    @property (nonatomic, readonly, copy) NSArray<__kindof UIView *> *subviews;

    这样,写下面的代码时就没有任何警告了:

    UIButton *button = (UIButton *)view.subviews.lastObject;

    挥毫泼墨,书写人生篇章
  • 相关阅读:
    汽车常用的ECU芯片
    Semaphore 和 Mutex
    C语言中结构体 自引用 和 相互引用
    __ARM_PROFILE_M__ __CORE__ __ARMVFP__ __LITTLE_ENDIAN__
    Cortex-M3 Context Switching
    CORTEX -M3 : Registers in depth
    IAR USING PRE- AND POST-BUILD ACTIONS
    IAR EWARM Argument variables $PROJ_DIR$ $TOOLKIT_DIR$
    SQLSERVER一些公用DLL的作用解释
    SQLSERVER性能计数器的简单剖析
  • 原文地址:https://www.cnblogs.com/Jusive/p/5196458.html
Copyright © 2020-2023  润新知