我们直入主题,关于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生成的属性变量,其他都不可以使用。假如我在类中定义一个方法,在调用的时候则不能使用点语法调用该方法,可以使用中括号调用。

OC中property方法的使用的更多相关文章

  1. OC中@property属性关键字的使用(assign/weak/strong/copy)

    OC中@property属性关键字的使用(assign/weak/strong/copy) 一.assign 用于 ‘基本数据类型’.‘枚举’.‘结构体’ 等非OC对象类型 eg:int.bool等 ...

  2. OC 中property的使用

    property在使用的时候需要在其前面加上@符号,需要将其写在类的头文件中 当在定义一个对象的属性变量时,例如定义一个Person类中的name属性,可定义为: @property (nonatom ...

  3. 对OC中property的一点理解

    最近在看即将要加入的项目的代码,看到一个protocol里包含着几个property.之前没有写过类似的代码,看到这里的时候,突然疑惑了一下,发现自己对property的理解好像有点模糊.所以回家后又 ...

  4. OC中property的有关属性

    property的有关属性: (1)readwrite是可读可写特征:需要生成getter方法和setter方法: (2)readonly是只读特性只会生成getter方法不会生成setter方法: ...

  5. 网络与多线程---OC中多线程方法GCD(二)

    小编在前一篇中介绍了多线程实现的五种常用方法.在接下来所介绍的这种方法是最具有魅力的,最具有诱惑的实现多线程的方案---GCD 一.什么是GCD GCD是Grand Central Dispatch的 ...

  6. OC中属性及方法

    1.声明式属性    a.实例变量    b.声明属性        自动生成setter/getter方法        .h ->@property 属性类型 属性名;        .m ...

  7. OC中实例变量可见度、setter、getter方法和自定义初始化方法

    在对类和对象有一定了解之后,我们进一步探讨实例变量的可见度等相关知识 实例变量的可见度分为三种情况:public(共有),protected(受保护的,默认),private(私有的),具体的不同和特 ...

  8. OC中的私有变量和description

    .OC中的私有变量 在类的实现即.m @implementation中也可以声明成员变量,但是因为在其他文件中通常都只 是包含头文件而不会包含实现文件,所以在.m文件中声明的成员变量是@private ...

  9. Objective-C中一个方法如何传递多个参数的理解

    原来如此 Objective-C语法中多参数传递方法经常是初学者最容易犯困的地方.我自己也是刚刚悟出来与大家分享. 分析 由于我们已有的语言经验告诉我们定义方法都是: 一个类型匹配一个参数(动态语言甚 ...

随机推荐

  1. 远程连接Redis服务器

    建立了一个redis服务器,那么其他主机应该怎么连接上呢? /** * * 修改redis.conf配置文件 * */ // 1. 注释掉bind绑定配置 // 2. 搜索并修改为 protected ...

  2. var a =10 与 a = 10的区别

    学习文章------汤姆大叔-变量对象 总结笔记 变量特点: ①变量声明可以存储在变量对象中.②变量不能直接用delete删除. var a =10 与 a = 10的区别: ①a = 10只是为全局 ...

  3. Mavn 使用介绍

      1 Maven介绍 1.1 项目开发中遇到的问题 1.都是同样的代码,为什么在我的机器上可以编译执行,而在他的机器上就不行? 2.为什么在我的机器上可以正常打包,而配置管理员却打不出来? 3.项目 ...

  4. Apache服务器运维笔记(4)----服务器扩展部分

    在Apache的默认配置文件夹中有一个 extra 目录,这个目录是用来存放 Apache 其他模块的配置文件的.这些文件是 Apache 针对常用的模块而设置并提供的,它们都是通过 Include ...

  5. 基础架构之Gitlab Runner

    基础架构之Gitlab Runner也是常用的基础设施,我们接着GitLab操作,具体使用GitlabRunner,如果不熟悉可以见官方详细介绍https://docs.gitlab.com/runn ...

  6. C语言string.h中常用字符函数介绍

    原文:http://www.cnblogs.com/xuwenmin888/archive/2013/05/03/3057883.html strcpy 函数名: strcpy 功 能: 拷贝一个字符 ...

  7. Spring返回json数据

    第一种形式:使用注解@ResponseBody @RequestMapping(value = "/admin/jq", method = RequestMethod.GET) @ ...

  8. SQL Server 2014 聚集列存储

    SQL Server 自2012以来引入了列存储的概念,至今2016对列存储的支持已经是非常友好了.由于我这边线上环境主要是2014,所以本文是以2014为基础的SQL Server 的列存储的介绍. ...

  9. AppDomain配置和卸载

    AppDomain 1.配置AppDomain 使用AppDomainSetup类为新应用程序域提供带有配置信息的公共语言运行时.创建自己的应用程序域时,最重要的ApplicationBase(它是定 ...

  10. 如何使用Flashfxp上传下载文件

    一.首先您本地电脑需要安装flashfxp软件,您可以通过百度搜索下载. 二.我们打开flashfxp,然后在右上角点击“会话”,再点击“快速连接”,如下图. 三.弹出“如下图”窗口.请输入FTP连接 ...