当前位置: 首页 > news >正文

Swift 2 0 所有新特性

写在开头 iOS开发者 群532084214 给大家提供一个交流技术 也可以聊天打屁的平台

最近Swift 2 出来了 国内开发者迅速上手 参看这个

http://www.csdn.net/article/2015-06-09/2824909-xcode-7-beta-and-swift

但是发现要不然写的不全 要不然写都不写 不知道毛线意思 索性自己写 Repeat

       func doTest() {
    var x = 0
    //        为了增强语意do换成repeat
    repeat {
        print(x)
        x++
    }while(x<6)
    
}
复制代码

Error Handling

// ErrorType 可以throws 和catch  NSError 已经实现ErrorType
enum MyError:ErrorType{
    case MissName
    case MissOther
} //enum 适合自定义error




//     no throw
func  errorTest1() -> Bool {
    do {
        try NSURL(string: "fa")?.checkResourceIsReachable()
        return true
        //            指定错误
    }catch NSURLError.FileDoesNotExist {
        return false
    }catch {
        return false
    }
}


//     has throw
//    guard 也可以配合throw
func errorTest2() throws {
    defer { print("no meter how  这个一定会放在方法尾执行 类型于 java  finally  不过可以不配合try  catch ")}
//             swift 1.X init?
    let index = Int("gs")
    print(index)//nil 这样真的好吗  如果真的出现错误怎么把Error 到处传递 ?

    // swift 2.0
    do {
        try NSURL(string: "fa")?.checkResourceIsReachable()
    }catch  {
        throw error
    }
}



//     I know never error
func errorTest3 (){
    //        当然只是 demo  我瞎鸡巴写的 肯定有错的
    try!  NSURL(string: "http://www.baidu.com")?.checkResourceIsReachable()
    print("绝壁没有错误")
}
复制代码

@avAiliable

@available(iOS 8.0, OSX 10.10, *)
func startUserActivity() -> NSUserActivity? {
    if #available(iOS 8.0, OSX 10.10, *) {
        // 当版本匹配时使用Handoff APIs.
        let activity = NSUserActivity(activityType:"com.example.ShoppingList.view")
        activity.becomeCurrent()
    } else {
        //当版本不匹配时返回.
        return nil
        
    }
    return nil
}
复制代码

defer

func deferTest() {
    let f = fopen("x.txt", "r")
    defer {
        fclose(f)
    }
    
}
复制代码

guard

func guardTest() -> String {
    let  name:NSString  = "fa"
    let  age  = 8.0
    guard  let realName = name   as? String ,            let realAge = age as? Double else {
        print("这个guard类似于if  只不过大部分时间用来坐模式匹配 ")
        
        return "'这里转换失败提前退出  其实就是  guard  ====== !if "
    }
    //        guard  let realName = name   as? String ,            let realAge = age as? Int else {
    //            print("这个guard类似于if  只不过大部分时间用来坐模式匹配 ")
    //
    //            return "'这里转换失败提前退出  其实就是  guard  ====== !if "
    //        }
    print("\(realName)\(realAge)   转换成功")
    return "转换成功"
    //        for in  where    /  switch case where  / if let where /while...where 也支持匹配
}
复制代码

Protocol Extension has default implementation

//MARK:- 可以给协议加扩展
  extension UITableViewDataSource {
func myFun(){
    print("带有默认实习的扩展 可以用作设计模式中适配器模式")
   }
}
复制代码

相关文章:

  • Xcode真机调试出现The account '***' has no team with ID '***'的解决方案
  • 关于Autolayout制作动画的坑
  • iOS解析HTMl标签以及开发中的一些坑
  • iOS10判断摄像机是否可用
  • Android类似微信图片选择器
  • 使用MaxCompute搭建社交好友推荐系统
  • C 标准库 - stdio.h
  • [LeetCode] Verify Preorder Sequence in Binary Search Tree 验证二叉搜索树的先序序列
  • linux学习笔记四
  • 如何优雅地为Struts2的action加监控日志
  • Oracle12C_____处理数据库01033连接错误问题.sql
  • Mac 10.12安装远程桌面工具TeamViewer
  • NGUI_Toggle
  • dubbo源码—dubbo简介
  • 浏览器缓存机制分析
  • 【Linux系统编程】快速查找errno错误码信息
  • Apache Spark Streaming 使用实例
  • Java精华积累:初学者都应该搞懂的问题
  • PHP变量
  • Python socket服务器端、客户端传送信息
  • python学习笔记-类对象的信息
  • React Native移动开发实战-3-实现页面间的数据传递
  • SpriteKit 技巧之添加背景图片
  • tab.js分享及浏览器兼容性问题汇总
  • Terraform入门 - 3. 变更基础设施
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • 欢迎参加第二届中国游戏开发者大会
  • 精彩代码 vue.js
  • 前端临床手札——文件上传
  • ​业务双活的数据切换思路设计(下)
  • !!Dom4j 学习笔记
  • #预处理和函数的对比以及条件编译
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (差分)胡桃爱原石
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)nsfocus-绿盟科技笔试题目
  • (转)项目管理杂谈-我所期望的新人
  • (转)用.Net的File控件上传文件的解决方案
  • (状压dp)uva 10817 Headmaster's Headache
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .Net Winform开发笔记(一)
  • .NET开发不可不知、不可不用的辅助类(一)
  • .NET中的Exception处理(C#)
  • .net中的Queue和Stack
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • .py文件应该怎样打开?
  • @Transactional 竟也能解决分布式事务?
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [ solr入门 ] - 利用solrJ进行检索