zoukankan      html  css  js  c++  java
  • OC中property方法的使用

    我们直入主题,关于property方法,我们先来了解一下相关的知识,首先是成员变量,实例变量,属性变量。

    我们定义一个类来看一下

    @interface Person :NSObject{

    NSInteger age;      //年龄变量

    NSString *name;   //名字变量

    }

    @property(nonatomic,assign)float height;  //身高变量

    @property(nonatomic,strong)NSString *skinColor;   //肤色变量

    @end

    @implementation Person

    @end

    在这个类中,在大括号内定义的变量属于成员变量,成员变量分为实例变量和基本数据类型变量,我们如何去区分呢?如果说这个成员变量是类变量,即实例变量,其他的则为成员变量。在上面的类中,name是字符串类变量,所以是实例变量,age则为成员变量。那么什么是属性变量呢?属性变量就是用property声明的变量,而不必关注是否是类变量,皆为属性变量。到这里相信大家对这几种变量已经很熟悉了。学过Java的同学知道,Java中有get方法和set方法,而且可以很方便的由系统自动生成。那么在OC中能不能由系统自动生成get和set方法呢?答案是可以的。如果我们有很多变量需要写get和set方法,是一个很难操作的过程。在OC中如何实现呢?就是用我们的property方法去生成属性变量。注意,在OC中,只有由property生成的属性变量才带有set和get方法!

    那么生成一个属性变量,property就为我们生成了get和set方法。(nonatomic,strong/assing),括号内的各个代码我们暂且先不解释,在目前阶段,我们在写property方法时,第一个都是nonatomic,第二个可以是strong或assign,我们只需要知道,如果变量是OC的类变量,那么我们就选择strong,如果是基础数据类型变量我们就选择assign。往后学会慢慢深入理解。使用property定义的变量,我们在main函数中可以直接调用,也接触到了我们要阐述的另一个知识点,点语法。我们在主函数中实例化一个对象 Person *p = [[Person alloc]init];我们想为身高变量赋值,p.height = 180.0;那么此时我们就使用了点语法,此时我们要注意,使用点语法就相当于调用property给我们生成的get和set方法,如果点语法在等号左边,如前面身高赋值,就是默认调用set

    方法,如果点语法在等号右边或直接使用点语法输出数据,则默认调用get方法,如  float temp = p.height;NSLog(@"%f",p.height);点语法只能用于由property生成的属性变量,其他都不可以使用。假如我在类中定义一个方法,在调用的时候则不能使用点语法调用该方法,可以使用中括号调用。

  • 相关阅读:
    Element-UI饿了么时间组件控件按月份周日期,开始时间结束时间范围限制参数
    揭秘(爱奇艺、优酷、腾讯)在线视频网站视频2倍速、多倍速快速播放的前端实现方法
    提高敲代码的效率:程序员同扭曲时间的事儿抗争
    原生JS在网页上复制的所有文字后面自动加上一段版权声明
    .net core kafka 入门实例 一篇看懂
    聊聊Grpc使用中的坑以及怎么填
    MongoDB 上手开发实践(入门上手就这一篇)
    聊聊redis实际运用及骚操作
    .NET Core 微服务之Polly熔断策略
    .NET Core 微服务之Polly重试策略
  • 原文地址:https://www.cnblogs.com/li-wei203/p/9374343.html
Copyright © 2011-2022 走看看