iOS 从Objective-C到Swift

一 属性
  • OC中 我们最常用的property
    // 常常会这样写
    @property (nonatomic, copy) NSString *name;
  • Swift中似乎更简单了: 常常这样说变量(var) | 常量(let), 示例代码如下, 我定义一个name变量赋值为Summer
    class ViewController: UIViewController {
      var name = "Summer"
    }
    所需要注意的: 似乎Swift中并没有属性修饰(strong,weak等。)
    1.1 strong在Swift中是默认的
    1.2 weak: 通过weak关键词声明
    weak var btn = UIButton()
二 控制流
  • if 不需要使用 () 来包裹条件了, 示例代码如下
          let a = 10
          if a < 5 {
              // code
          }
    这里所需要注意的: 条件必须为 Boolean表达式
          // 所以这样写, 是错误的
          let b = 10
          if b {
              //
          }
  • for Swift为其添加了范围操作符 ... 与 ..<
    for i in 1...5 {
              print(i) // 1 2 3 4 5
          }
    // 同时支持自定义步长
    for j in 0.stride(through: 10, by: 2) {
              print(j) // 0 2 4 6 8 10
          }
  • Switch 当然在swift中switch也有很大的提升
    1.1 不需要强制加上 break
    1.2 在OC中switch支持int和char类型作为匹配 而在swift中得到了很大的提升(可以对 浮点型, 字符串进行匹配了)
          // 方便了很多
          let des = "summer"
          switch des{
          case "summer":
              print("夏天然后--- \("帅哥")")
          case "1":
              print("不知道什么鬼")
          case "2":
              print("不知道什么鬼")
          case "3":
              print("不知道什么鬼")
          default:
              print("default")
          }
三 函数(方法)
  • OC中 有实例方法和类方法
// 比如这样, 写了一个没有返回值没有参数的函数
- (void)print
+ (NSString *)returnStr
  • Swift中基本都是类似的, 看示例代码感受一下
// func 关键字定义函数
// class 类方法修饰
// 返回值在 -> 之后 例子中就是没有返回值
func printf() ->Void
class func returnStr() ->String
四 初始化
var btn = UIButton() // 这样就可以了

值得注意的是: Swift为我们处理了alloc的过程, 而init有一些需要注意的地方

  • Swift 都必须在对象被创建出来前设置好。也就是我们必须在init方法中赋好值,或是直接给属性提供一个默认值。
五 Swift如何检查delegate 是否为nil
// OC 中我们会这样写
if (self.dataSource && [self.dataSource respondsToSelector:@selector(titleForSegmentAtIndex:)]) {
        thisSegmentTitle = [self.dataSource titleForSegmentAtIndex:index];
    }
// Swift中非常简洁, 示例如下
if let thisSementTitle = dataSource?.titleFroSegmentAtIndex?(index){
}
六 扩展(Extension)

你可以看看这篇关于扩展好在哪里文章链接 - 简书

七 关于Cocoa
  • AnyObject : 在Swift中,在AnyObject上获取的property都是optional的。
    我们知道id的类型直到运行时才能被确定,如果我们向一个对象发送一条不能响应的消息,就会导致crash。我们可以利用Swift的语法特性AnyObject来防止这样的错误
  • 闭包: OC中的block在swift中转化为闭包 使用闭包完成反向传值这是我之前写好的示例代码有兴趣可以下载看看 

自制图片


Swift 使用CollectionView 封装的轮播图


自制效果图

Swift仿简书淘宝App很友好弹出view效果


播放音乐立柱

Swift版本仿网易云音乐播放音乐动画效果

我还写过一篇关于swift学习资料的请看这篇

还写了一篇关于swift简单实战- 涉及了网络请求, tableview的使用, 自定义cell, 字典转模型等等你可以看看这篇

总结: 篇幅有限, 相比于OC, Swift还有更多好玩的地方, Swift一直在更新不断变化, 确实有他的独到之处, 相信不久的将来, 会流行起来, 现在有一些公司已经开始做swift尝试了, 不管未来iOS开发的主流语言是不是Swift, 未雨绸缪总有些必要吧.

Swift Strings - 你想知道的
Swift Tips:常用的知识点总结(持续更新...) - 2016.07.11

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值