美文网首页
Swift属性使用

Swift属性使用

作者: mac迷你 | 来源:发表于2018-01-07 17:15 被阅读6145次

Swift属性使用 一在uitableviewcell中使用情况

(OC中属性与swift使用的区别,get、set方法)

属性 property
在oc中声明 例如

@property (nonatomic, strong) UILabel *titleLB;

在OC中我们有重写set和get方法。最常使用的情况就是在tableviewcell中赋值

.h
#import <UIKit/UIKit.h>
@interface DemoCell : UITableViewCell
@property (nonatomic, copy) NSString *name;

@end
.m
- (void)setName:(NSString *)name
{
    _name = name;
}

此时我们重写set方法,在set方法里面就可以对cell加载数据

那么在swift中,遇到uitableviewcell这种情况是否很自然的重写set方法吗?

我们重写set方法的目的是在属性的值改变后对UI进行修改


var newName:String?

var name:String?{
set{
 self.newName = newValue
     //进行操作
}
get{
 return self.newName
}

上面的name属于计算型属性。可以看出来,其本身不存储,而是通过set和get方法间接设置其他变量类获取(通过newName获取)这一点和OC完全不一样。计算型属性本质不进行存储

那么我们在cell中使用计算型属性来实现上面oc中的逻辑是否可以?答案肯定可行。但是如果代码结构用了大量计算型属性的同事还需要额外声明另外的变量来存储,并且set和get在swift中必须成对出现,这样会大大增加代码量。如果注释没有写明白,其他开发人员接手误用了newName传值就会造成bug。
计算型属性就不太适用于这种情况。

此时只需在属性里面添加观察器即可
var newName:String?{
      didSet{
  }
}

上面仍然声明的一个变量,但是我们设置了属性观察器didSet。在外部对newName赋值后,disSet获得newName改变后的新值(oldValue)。此时在didSet里面进行操作。

这种情况与在OC中的逻辑完全一致,即存储了数据,在属性改变后对UI组件进行更新。在OC中我们重写set方法,而到了swift我们给属性增加属性观察器

相关文章

  • Swift属性使用

    Swift属性使用 一在uitableviewcell中使用情况 (OC中属性与swift使用的区别,get、se...

  • Swift3.0中private该方法应用fileprivate

    当在使用Swift3.0 extension时private无法被访问 Swift3.0中private属性作用域...

  • 计算属性

    Swift中类可以使用计算属性,即使用get和set来间接获取/改变其他属性的值

  • 最新swift 4.0 更新总结

    1. Swift4.0中对于扩展的属性(包括实例属性、static属性、class属性),都只能使用get方法,不...

  • Swift笔记(一)属性、析构、调用OC单例

    目录 swift属性存储属性懒加载属性计算属性属性监听类型属性 swift析构函数 swift调用OC单例类方法 ...

  • Swift 属性

    Swift 属性 在Swift中属性主要分为存储属性、计算属性、延迟存储属性、类型属性这四种,并且Swift还提供...

  • 浅谈 Swift 中的属性(Property)

    前言 Swift 中的属性分为存储属性与计算属性,存储属性即为我们平时常用的属性,可以直接赋值使用,而计算属性不直...

  • 浅谈 Swift 中的属性(Property)

    前言 Swift 中的属性分为存储属性与计算属性,存储属性即为我们平时常用的属性,可以直接赋值使用,而计算属性不直...

  • Swift 属性基本使用

    存储属性 <类 枚举 结构体> 的常量或变量(有具体存储空间) 计算属性 <类 枚举 结构体> 属性函数(无存...

  • Swift之关联对象

    在swift中,展不能添加存储属性,Swift中可以使用Objective-C的关联对象(Associated O...

网友评论

      本文标题:Swift属性使用

      本文链接:https://www.haomeiwen.com/subject/jexrgxtx.html