swift 属性setget_swift oc识别不了swift的delegate属性 - CSDN
  • swiftget,set被称之为“计算属性”,它用来间接获取/改变其他属性的值。 - setget 是针对 计算变量(Calculated property ) 是不可以赋值的 - 普通的存储变量(storage property)才是可以赋值的setget...

    在swift 中get,set被称之为“计算属性”,它用来间接获取/改变其他属性的值。
    - set 和get 是针对 计算变量(Calculated property ) 是不可以赋值的
    - 普通的存储变量(storage property)才是可以赋值的

    set和get的写法:

       var _name:String?
        var name:String?{
            get{
                return _name;
            }
            set{
    //            只要外界通过.name给name赋值,就会把值给newValue
                _name = newValue
            }
        }

    在开发过程中不建议这样使用,首先需要定义两个属性,很麻烦。

    推荐使用这样的方式实现

     var gender:String?{
            didSet
            {
                NSLog("已经改变的时候", []);
            }
        }

    除了didSet是已经改变之后的操作,还有willSet是将要改变的时候

    只是重写了get方法,我们称这个属性为“计算性”属性,也就是只读属性

    注意:计算型属性,不占用内存空间

    //“?”是可以省略的
      var age:Int?{
            get{
                return 18;
            }
        }
    展开全文
  • Swift3.0 -- get & set 方法

    2017-02-09 19:27:03
    Swift中的get & set 方法 只读属性 readonly,计算型属性 计算型属性和懒加载的区别

    1.Swift中的get & set 方法

    定义一个Person类

    class Person: NSObject {
        
        //getter & setter 仅供演示,日常开发不用
        var _name: String?
        
        var name: String? {
            get{
                //返回成员变量
                return _name;
            }
            set{
                //使用 _成员变量 记录值
                _name = newValue;
            }
        }
    }

    2.只读属性 readonly,计算型属性

    class Person: NSObject {
        
        var name: String?
        
        //OC中定义属性的时候,readonly,重写getter方法
        var title: String {
            //之重写了getter方法,没有重写setter方法
            //就是只读属性
            get{
                return "Mr." + (name ?? "");
            }
        }
        
        //只读属性的简写,直接 return
        //又称为计算型属性,本身不储存内容,都是通过计算获得结果
        //类似于一个函数,没有参数,有返回值
        var titleTwo: String {
            return "xxxx" + (name ?? "");
        }
    }
    
    3.计算型属性和懒加载的区别

    计算型属性,本身不储存内容,都是通过计算获得结果,类似于一个函数,没有参数,有返回值。

    懒加载会在第一次访问执行,闭包结束后,会把结果存在属性中,后续调用,直接返回属性的内容,懒加载的属性会分配空间存储值。

    展开全文
  • 首先我们看一段代码: var A:Int = 0 var B:Int = 0 var C:Int { get { return 1 } set { print("Recived new va...

    首先我们看一段代码:

            var A:Int = 0
            var B:Int = 0
    
            var C:Int {
                get {
                    return  1
                }
                set {
                    print("Recived new value", newValue, " and stored into 'B' ")
                    B = newValue  
                }  
            }
    
            C = 9
    

      当我们输入C = 9 的时候,会走C的set赋值方法  控制台输出  Recived new value 9  and stored into 'B' 

          当我们输入 B = C 的时候  会取走C的get取值方法   B被赋值为1

    这并不难理解,代码中就能看出所以然,所以不再赘述;


     

    willset  didset

    这两个关键字我们可以认为是属性观察者,属性观察者,类似于触发器。用来监视属性的除初始化之外的属性值变化,当属性值发生改变时可以对此作出响应。有如下特点:
    1,不仅可以在属性值改变后触发didSet,也可以在属性值改变前触发willSet。
    2,给属性添加观察者必须要声明清楚属性类型,否则编译器报错。
    3,willSet可以带一个newName的参数,没有的话,该参数默认命名为newValue。
    4,didSet可以带一个oldName的参数,表示旧的属性,不带的话默认命名为oldValue。
    5,属性初始化时,willSet和didSet不会调用。只有在初始化上下文之外,当设置属性值时才会调用。
    6,即使是设置的值和原来值相同,willSet和didSet也会被调用
    原文出自:www.hangge.com  转载请保留原文链接:http://www.hangge.com/blog/cache/detail_519.html

    看一段代码:

            var A:Int = 0
            var B:Int = 0
    
            var C:Int? {
    //            get {
    //                return 1
    //            }
    //            set {
    //                print("Recived new value", newValue, " and stored into 'B' ")
    //                B = newValue  
    //            }
    
                willSet{
                    print("将要给属性赋值");
                }
                didSet{
                    print("给属性赋值完成");
                }
            }
    
    
            C = 9
    

      当我们给C赋值的时候就会走willSet 和  didSet方法 ;这里有一个注意点:didset 不能同时拥有一个get或者set说明符

     

    转载于:https://www.cnblogs.com/lidarui/p/5985440.html

    展开全文
  • //: Playground - noun: a place where people can play// 1.Swift中类可以使用 计算属性,即使用getset来间接获取/改变其他属性的值class Calcuator { var a:Int = 1 var b:Int = 1 var sum:Int { get{ ...
    //: Playground - noun: a place where people can play
    
    // 1.Swift中类可以使用 计算属性,即使用get和set来间接获取/改变其他属性的值
    
    class Calcuator {
        var a:Int = 1
        var b:Int = 1
    
        var sum:Int {
            get{
                return a + b
            }
            set(val){
                b = val - a
            }
        }
    }
    
    let cal = Calcuator()
    print(cal.sum) //2
    cal.sum = 5
    print(cal.b) // 4
    
    // 2.对于set有简写方法,简写时,新赋的值默认为newValue
    class Calcuator2 {
        var a:Int = 1
        var b:Int = 1
    
        var sum:Int{
            get{
                return a + b
            }
            set{
                b = newValue - a
            }
        }
    }
    
    
    // 3.如果只要get,不要set方法时可以简写如下代码
    class Calcuator3 {
        var a:Int = 1
        var b:Int = 1
    
        var sum:Int {
            return a + b
        }
    }
    展开全文
  • Swift中的getset方法

    2016-03-03 17:33:21
    当我们得到属性值的时候,会调用该属性get方法。 当我们去设置属性值的时候,...Swift中有储值属性和计算属性,一般我们应该是给计算属性添加getset方法,现在先通过一个Example展示: var A:Int = 0 var B:Int = 0

    当我们得到属性值的时候,会调用该属性的get方法。

    当我们去设置属性值的时候,会调用该属性的set方法。

    当我们给属性设置值的时候,Swift会自动给我们创建一个名为newValue的常量并且可以用于set{}中。

    Swift中有储值属性和计算属性,一般我们应该是给计算属性添加get和set方法,现在先通过一个Example展示:

    var A:Int = 0
    var B:Int = 0
    
    var C:Int {
    	get {
    		return 1
    	}
    	set {
    		print("Recived new value", newValue, " and stored into 'B' ")
    		B = newValue
    	}
    }
    
    //When we are getting a value of C it fires get{} part of C property
    A = C
    A            //Now A = 1
    
    //When we are setting a value to C it fires set{} part of C property
    C = 2
    B            //Now B = 2

    var c:Int = 0
    var _num : Int = 2
    var num : Int {
    get{
    	return _num
    	} set (newValue) {
    	if newValue >= 2 {
    	   _num = newValue
    	} else {
    	    print("error: cannot have family with less than 2 members")
    	    c = 0
    	    _num = 0
    	}
        }
    }

    下面这段代码是我自己写的,如果var a = num,那么会调用num的get方法,会返回_num,所以a的值为2

    如果num = 5,调用set方法,newValue为5且大于2,因此此时_num的值为5

    如果num = 1,调用set方法,走else分支,c = 0, _num = 0


    展开全文
  • Swift 属性 willSet/didSet get/set class var和static
  • var _p_w_picpath: UIImage? var p_w_picpath: UIImage? { get { return _p_w_picpath } set { _p_w_picpath = newValue } } 转载于:htt...
  • Swiftgetset方法

    2016-07-10 17:34:08
    在设置属性值时:Swift会自动给我们创建一个名为newValue的常量并且可以用于set{}中。 计算属性本身不是一个值,但是它提供getset来间接地使用和设置存储属性的值 例子: @IBOutlet weak var ...
  • Protocol(协议)用于统一方法和属性的名称,而不实现任何功能。协议能够被类,枚举,结构体实现,满足协议要求的类,枚举,结构体被称为协议的遵循者。 遵循者需要提供协议指定的成员,如属性,方法,操作符,下标...
  • Swift set get 属性

    2017-03-14 10:17:35
    属性分为普通属性/计算属性: override func viewDidLoad() {   super.viewDidLoad()     let shape = Shape()   let nickName = shape.nickName_3 ///方法   print(nickName)
  • 1、Swift中类可以使用计算属性,即使用getset来间接获取/改变其他属性的值 class Calumator{ var x:Int = 5; var y:Int = 6; var sum:Int{ get{ return x + y } set(val)...
  • 原文:http://coolketang.com/staticCoding/5a9925ad9f5454507417fc90.html1. getset关键词被称为计算属性。它的目的是在取值和赋值时,执行里面的代码。本节课将为你讲解这两个关键词的使用方法。 2. 首先定义一...
  • Swift中重写setget方法是下面这种。先定义一个变量,当调用set方法的时候,系统会有一个newValue,将newVaule赋值给我们定义的变量,然后从get方法里面返回去。Swift中一般重写比较少 //定义一个变量 var _...
  • 在OC中我们经常重写属性getset方法来刷新UI之类的事,那在swift中,怎么实现getset方法呢。  代码如下: 这里另外初始化一个_text的变量,存储新值,防止get方法死循环。在set方法里有个newValue的变量...
  • 使用property的时候,同时重写set get方法会报错,如 @interface ViewController : UIViewController @property (nonatomic, copy) NSString *name; @end 单独重写任意一个方法都不会报错,但是同时重写的话,...
  • 1. 属性的读写方法 getter & setter private var _name: String? var name: String? { get { return _name } set { _name = newValue } } 2. 存储型属性 & 计算型属性 存储型属性 - ...
  • willset didset 属性观察器 在属性的各个时间节点来做相应的处理 var variable1 : Int = 0 { //variable1变量变化前 运行 willSet/*(newValue)*/{ print("willSet called") print("we will set
  • Swift学习:属性

    2018-08-13 09:43:48
    本篇将详细总结介绍Swift属性的用法; 属性是与特定的Swift类、结构体、枚举相关联的值;与其他语言相比,属性不再是被类所特有。 主要内容: 1.存储属性与计算属性 2.属性观察器 3.类型属性 4.全局变量与局部...
  • swift 重写set方法

    2016-06-27 12:42:28
    var name = "myd" { /*这里是在赋值之前会调用,在这里面会有一个新属性newValue,这个newValue就等价与之前oc里面的-(void)setX:(CGFloat)x;里面最后面的那个小x这样你就可以处理新值了,并把他直接赋值给当前属性*/...
1 2 3 4 5 ... 20
收藏数 6,159
精华内容 2,463
关键字:

swift 属性setget