zoukankan      html  css  js  c++  java
  • 记录一下Swift3.0的一些代码格式的变化

    一.去重:

    1>颜色:

    UIColor.whiteColor() 被改为 UIColor.white()

    2>数组取值:

    list.objectAtIndex(i) 被改为 list.object(at: i)

    3>present:

    presentViewController(controller, animated: true) 被改为 present(toViewController: controller, animated: true)

    4> cell:

    dequeueReusableCellWithIdentifier("Cell", forIndexPath:indexPath) 被改为 dequeueReusableCell(withIdentifier: "Cell", for: indexPath)

    5>tableView

    func numberOfSectionsInTableView(tableView: UITableView) -> Int 被改为 func numberOfSections(in tableView: UITableView) -> Int

    二.参数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    override func viewWillAppear(animated: Bool)
    被改为
    override func viewWillAppear(_ animated: Bool)
    下面再看一个实例的调用例子,加深印象:
     
    func myFunc(x: Int, y: Int)
    这个函数在调用时必须使用以下代码
    myFunc(x: 1, y: 2)
    若是允许匿名参数,则修改之:
     
    func myFunc(_ x: Int, _ y: Int)
    这个函数在调用时允许不带参数名称
    myFunc(1, 2)

    三、命名

    1>对齐方式:

    lbl.textAlignment = NSTextAlignment.Center

    被改为

    lbl.textAlignment = NSTextAlignment.center

    2>CGRect:

    tableFooterView = UIView(frame: CGRectZero) 被改为 tableFooterView = UIView(frame: CGRect.zero)

    3>CGRectZero:

    CGRectZero改为CGRect.zero

    4>hidden:

    lbl.hidden = false 被改为 lbl.isHidden = false

    5>Bundle:

    let bundle = NSBundle.mainBundle() 被改为 let bundle = Bundle.main()

    6>FileManager:

    let mgr = NSFileManager.defaultManager() 被改为 let mgr = FileManager.default()

     

    四、方法的返回值处理

    1>我们在开发中可能会经常调用一些带有返回值的方法,但是却不处理返回值,例如以下这种:

    navigationController!.popViewControllerAnimated(true)

    这个方法实际上返回一个 UIViewController,但是很少有人会用,更多的场景是把它当成无返回的方法来使用。但是在 Swift 3 中,这样做是不行的,你必须处理掉这个返回值,如下:

    let _ = navigationController!.popViewController(animated: true)

     使用单个下划线来指代一个不会被使用的变量。

    2>Swift 3 不再允许传入传出的对象,之前带有 var 的方法声明将全部作废:

    1
    2
    3
    4
    func myFunc(var a: Int) -> Int
    如以上这种声明,已不可再使用,对于有多个值要返回的方法,必须改为:
     
    fun myFunc(a: Int) -> (Int, Int)

    五、可选类型


    var str: String! = "a"
    var s = str
    print(s)

    六、Selector

    Swift 3 对可选类型的处理更严格了,必须显式的在任何地方使用感叹号,例如我们有以下代码:
    self.performSelector(onMainThread: #selector(handle(ret:)), with: ret, waitUntilDone: true)
    就以 Swift 3 下的这个函数为基准吧,老版本的Selector获取方法是这样的:
    #selector(ViewController.handle(_:))    // 2.2
    #selector(ViewController.handle(:))     // 2.1
    #selector(handle)                       // 2.0
    @selector("handle:")                    // 1.x  x等于几已经不记得了
    "handle:"                               // 没记错的话是 1.0 时代,直接传个字符串就是 Selector
    N/A                                     // Swift 的历史上,还真有过没有 Selector 的版本

    回到 Swift 3 上来,目前的 Selector 写法如最上面那种,需要注意的是,Selector 的方法名和参数名必须与实际被调用的方法完全一致,否则编译时就会报错。 <用2.0的写法貌似也是可以调用的!!!>

    另外,Selector 传参时,只能传递对象,不能传基础数据类型,传基础数据类型的情况下,一律变成0(希望这只是当前版本的 bug,不然太蛋疼了)。虽说苹果已经把大部分的 NS 类都去掉了前缀,但是 NSNumber 这东西还是得经常用一下呢?


    七、类库
    1>协议的可选
    @objc protocol MyProtocol: NSObjectProtocol {
          optional func foo(myClass: MyClass?)
          optional func bar(myClass: MyClass?)
    }
    需要改为
    @objc protocol MyProtocol: NSObjectProtocol {
          @objc optional func foo(myClass: MyClass?)
          @objc optional func bar(myClass: MyClass?)
    }

    2>图形图象库:

    let imgData = UIImageJPEGRepresentation(img, 1)
    let imgPath = "(FileUtils.getDocumentPath())/(name)"
    imgData!.writeToFile(imgPath, atomically: true)
    必须改为
    let imgData = UIImageJPEGRepresentation(img, 1)
    let imgPath = "(FileUtils.getDocumentPath()!)/(name!)"
    NSData(data: imgData!).write(toFile: imgPath, atomically: true)

    参考链接: http://gold.xitu.io/entry/576bd4595bbb500059463426

  • 相关阅读:
    数值的格式化
    最近开发的一个多功能选择器
    OCI22053: 溢出错误的原因和解决方法
    js的四舍五入问题
    Vista 下先安装 VS 再装 IIS 7 运行出现 500.19 Error 的解决方法
    最近开发的一个多功能选择器2
    Oracle REF Cursor 用法(转帖)
    Oracle 查询历史数据(转帖)
    HDU 1203 I NEED A OFFER! 动态规划(01背包)
    HDU 1160 FatMouse's Speed 动态规划
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/5949895.html
Copyright © 2011-2022 走看看