OC 与 Swift 区别

OC 与 Swift 区别

一、block = 闭包

OC——block

typedef void(^successBlock)(NSURL* url,id data);

 

swift——闭包

typealias  successBlock = (NSURL, AnyObject) -> Void;

 

@escaping 逃逸闭包 :闭包在函数执行完后才被调用,调用的地方超过了这函数的范围,eg:网络请求结束后的回调的闭包,因为发起请求后过了一段时间后这个闭包才执行.

@noescape 非逃逸闭包(默认) : 闭包在这个函数结束前被调用,eg:我们常用的Masonry和Snapkit的添加约束方法,因为这闭包是马上执行的。

 

二、class

OC——[object isKindOfClass:[NSArray class]]

         [object isKindOfClass:[NSDictionary class]]

 

swift——data is [Any]   //array

           data is [String: Any]  //dictionary

           data is NSNumber

 

三、set & get 方法

OC——

- (void)setModel:(SquareLiveListModel *)model {

    _model = model;

}

 

swift——

    privatepublic可去掉

    var cName:String {

        get {return self.cName}

        set (newTitle) {

            //如果没有定义 newTitle,可以使用 newValue

            self.cName = newTitle

        }

    }

swift 中我们 不能使用  _model 来表示 OC 中@property 修饰的变量值 。在set&get方法中直接调用 会崩溃,故swift中用一个中间变量newValue来实现功能

 

四、willSet & didSet

var name: String? {

        //在属性name即将被赋值前 执行

        willSet {

            // newValue —— 待赋 新值, 此时属性name的值还是之前久值

            if newValue, newValue != name {

            }

        }

        //在属性name被赋值后执行

        didSet {

            

        }

    }

 

五、SEL

OC——  @selector(btnEvent:)

- (void)btnEvent:(UIButton *)sender {

}

 

swift—— #selector(btnEvent:)

@objc func btnEvent(sender: UIButton) {

}

 

六、guard

guard self.feed != nil else{

         //self.feed==nil则返回0

            return 0

        }

if语句相同的是,guard也是基于一个表达式的布尔值去判断一段代码是否该被执行。与if语句不同的是,guard只有在条件不满足的时候才会执行这段代码。你可以把guard近似的看做是Assert,但是你可以优雅的退出而非崩溃。

 

 

 

OC——

后续待。。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值