一、@property和@synthesize的基本使用

  • @property :可以自动生成某个成员变量的setter和getter的声明(@property int age;)。写在@interface里面;

  • @synthesize :自动生成age的setter和getter,并且在方法内部访问的是_age这个成员变量(@synthesize age = _age; // 如果后面不写=_age默认就是访问age成员变量)。写在@implementation里面;

二、@property和@synthesize的细节

  • 自动生成相应的成员变量的setter和getter的声明

  • 如果没有明确的setter和getter的实现,会自动生成相应的成员变量的setter和getter的实现

  • 如果代码中手动实现了setter方法,编译器就会自动生成getter方法

  • 如果代码中手动实现了getter方法,编译器就会自动生成setter方法

  • 如果代码中同时实现了setter方法和getter方法,编译器就不会自动生成不存在的成员变量(带下划线)

三、@property和@synthesize的其他用法

四、说明:

从Xcode4.4开始,@property  int  speed;既可以生成_speed的setter和getter的声明,还会自动生成_speed的setter和getter的实现,并且即使如果_speed没有在.h文件中的@interface中没有定义,也可以自动生成次成员变量,但是其类型是@private。

五、@synthesize  age = _age;与@synthesize  age;的区别:

  • @synthesize  age = _age; 访问的是_age这个成员变量;

  • @synthesize  age; 默认访问的是age这个成员变量,如果没有这个成员变量,就会自动生成@private类型的age成员变量;

六、注意点:

  • 如果手动实现了setter,编译器就只会自动生成getter;

  • 如果手动实现了getter,编译器就只会自动生成setter;

  • 如果同时手动实现了setter和getter,编译器就不会自动生成不存在的成员变量(带下划线_);

转载于:https://www.cnblogs.com/unique-ios/p/4333869.html

《Objective-c》-(@property和@synsthesize)相关推荐

  1. 七日杀Liunx SteamCMD开服超详细教程及服务器配置需求

    七日杀Liunx SteamCMD开服教程 服务器要求 服务器CPU主要用于数据分析和处理,解决运行容量问题.如果一款游戏有大量的页面和数据信息需要处理,建议选择8核以上的高性能CPU来保障游戏的稳定 ...

  2. iOS完全自学手册——[三]Objective-C语言速成,利用Objective-C创建自己的对象...

    1.前言 上一篇已经介绍了App Delegate.View Controller的基本概念,除此之外,分别利用storyboard和纯代码创建了第一个Xcode的工程,并对不同方式搭建项目进行了比较 ...

  3. 关于@property()的那些属性及ARC简介【nonatomic,atomic,assign,retain,strong,weak,copy。】

    @property()常用的属性有:nonatomic,atomic,assign,retain,strong,weak,copy. 其中atomic和nonatomic用来决定编译器生成的gette ...

  4. Objective c类的初始化

    Objective c中实现类的初始化要先重载父类的init方法: 1.首先调用[super init]使用父类的方法进行初始化.将对象赋给self 2.假设self不为nil即父类初始化成功,接着进 ...

  5. Objective C ARC 使用及原理

    Objective C ARC 使用及原理 手把手教你ARC ,里面介绍了ARC的一些特性, 还有将非ARC工程转换成ARC工程的方法 ARC 苹果官方文档 下面用我自己的话介绍一下ARC,并将看文档 ...

  6. IOS学习笔记——Objective-c基础(一)

    2019独角兽企业重金招聘Python工程师标准>>> 最近自学ios,ios的支持语言是Objective-c,所以要学习ios就需要先学习Objective-c语言.当掌握了Ob ...

  7. Qt for iOS,Qt 与Objective C混合编程

    因为我写了一系列Qt的博文以及一本书<Qt on Android核心编程>,最近有好几个使用Qt的朋友问起 Qt for iOS 的事情,因为我在这方面的经验特别少,写不出系统的文章来,非 ...

  8. Objective C 类变量的声明

    Objective C中类变量的声明一般有两种方式: 1)instance variable 2)property方式声明 instance variable方式声明如下: @interface My ...

  9. Objective C范型

    范型 范型编程是一种程序语言设计范式,它允许程序员在使用强类型的语言编写代码的时候,延迟确定具体的类型. 以Swift代码为例,假如有一个需求是要交换两个int,很容易写出类似代码 func swap ...

最新文章

  1. API Gateway
  2. 二叉树的建立和递归遍历
  3. Java写手机专题分析接口_jeesite学习文档API-内容管理模块
  4. MySQL 集群 3副本,Kubernetes经典实践——运行MySQL多副本集群
  5. mybatis-generator一些注意点 2021-04-21
  6. 物联网系统开发如何选择时序数据库
  7. linxu 启动过程分析
  8. 2018-2019 ACM-ICPC, Asia Shenyang Regional Contest题解
  9. Linux-centos7下安装MySQL和MySQL可视化工具workbench
  10. SpringBoot java串口操作(rxtx)
  11. NetKeeper720,能上QQ不能上网
  12. fsck fat32修复工具
  13. 大学生活_网络营销实验
  14. 苏州科技大学的计算机专业怎么样,苏州科技大学怎么样?有什么王牌专业?排名如何?...
  15. 电阻、二极管、三极管搭出的逻辑电路
  16. python交互界面实例_什么是“面向对象”程序设计-以Python为例
  17. 集成融云 SDK 怎么实现多端同步未读数
  18. 句柄和句柄类是不同!
  19. 云计算+大数据+深度学习+人工智能+量子计算=?
  20. ps--蝙蝠侠大战超人

热门文章

  1. python pandas 把数据保存成csv文件,以及读取csv文件获取指定行、指定列数据
  2. Jetson Xavier NX上安装scipy报错:numpy.distutils.system_info.NotFoundError: No lapack/blas resources found
  3. spring中是如何解析@Profile注解的
  4. LeetCode Minimum Genetic Mutation(dfs,bfs)
  5. Java中合成与继承的选择
  6. nginx的master和worker进程间的通信
  7. 一步步带你做vue后台管理框架(三)——登录功能
  8. 8.2.1.2 How MySQL Optimizes WHERE Clauses MySQL 优化WHERE 子句
  9. JNDI 笔记(一) 概述
  10. VB高效导入Excel2003和Excel2007文件到MSHFlexGrid控件显示