《Objective-c》-(@property和@synsthesize)
一、@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)相关推荐
- 七日杀Liunx SteamCMD开服超详细教程及服务器配置需求
七日杀Liunx SteamCMD开服教程 服务器要求 服务器CPU主要用于数据分析和处理,解决运行容量问题.如果一款游戏有大量的页面和数据信息需要处理,建议选择8核以上的高性能CPU来保障游戏的稳定 ...
- iOS完全自学手册——[三]Objective-C语言速成,利用Objective-C创建自己的对象...
1.前言 上一篇已经介绍了App Delegate.View Controller的基本概念,除此之外,分别利用storyboard和纯代码创建了第一个Xcode的工程,并对不同方式搭建项目进行了比较 ...
- 关于@property()的那些属性及ARC简介【nonatomic,atomic,assign,retain,strong,weak,copy。】
@property()常用的属性有:nonatomic,atomic,assign,retain,strong,weak,copy. 其中atomic和nonatomic用来决定编译器生成的gette ...
- Objective c类的初始化
Objective c中实现类的初始化要先重载父类的init方法: 1.首先调用[super init]使用父类的方法进行初始化.将对象赋给self 2.假设self不为nil即父类初始化成功,接着进 ...
- Objective C ARC 使用及原理
Objective C ARC 使用及原理 手把手教你ARC ,里面介绍了ARC的一些特性, 还有将非ARC工程转换成ARC工程的方法 ARC 苹果官方文档 下面用我自己的话介绍一下ARC,并将看文档 ...
- IOS学习笔记——Objective-c基础(一)
2019独角兽企业重金招聘Python工程师标准>>> 最近自学ios,ios的支持语言是Objective-c,所以要学习ios就需要先学习Objective-c语言.当掌握了Ob ...
- Qt for iOS,Qt 与Objective C混合编程
因为我写了一系列Qt的博文以及一本书<Qt on Android核心编程>,最近有好几个使用Qt的朋友问起 Qt for iOS 的事情,因为我在这方面的经验特别少,写不出系统的文章来,非 ...
- Objective C 类变量的声明
Objective C中类变量的声明一般有两种方式: 1)instance variable 2)property方式声明 instance variable方式声明如下: @interface My ...
- Objective C范型
范型 范型编程是一种程序语言设计范式,它允许程序员在使用强类型的语言编写代码的时候,延迟确定具体的类型. 以Swift代码为例,假如有一个需求是要交换两个int,很容易写出类似代码 func swap ...
最新文章
- API Gateway
- 二叉树的建立和递归遍历
- Java写手机专题分析接口_jeesite学习文档API-内容管理模块
- MySQL 集群 3副本,Kubernetes经典实践——运行MySQL多副本集群
- mybatis-generator一些注意点 2021-04-21
- 物联网系统开发如何选择时序数据库
- linxu 启动过程分析
- 2018-2019 ACM-ICPC, Asia Shenyang Regional Contest题解
- Linux-centos7下安装MySQL和MySQL可视化工具workbench
- SpringBoot java串口操作(rxtx)
- NetKeeper720,能上QQ不能上网
- fsck fat32修复工具
- 大学生活_网络营销实验
- 苏州科技大学的计算机专业怎么样,苏州科技大学怎么样?有什么王牌专业?排名如何?...
- 电阻、二极管、三极管搭出的逻辑电路
- python交互界面实例_什么是“面向对象”程序设计-以Python为例
- 集成融云 SDK 怎么实现多端同步未读数
- 句柄和句柄类是不同!
- 云计算+大数据+深度学习+人工智能+量子计算=?
- ps--蝙蝠侠大战超人
热门文章
- python pandas 把数据保存成csv文件,以及读取csv文件获取指定行、指定列数据
- Jetson Xavier NX上安装scipy报错:numpy.distutils.system_info.NotFoundError: No lapack/blas resources found
- spring中是如何解析@Profile注解的
- LeetCode Minimum Genetic Mutation(dfs,bfs)
- Java中合成与继承的选择
- nginx的master和worker进程间的通信
- 一步步带你做vue后台管理框架(三)——登录功能
- 8.2.1.2 How MySQL Optimizes WHERE Clauses MySQL 优化WHERE 子句
- JNDI 笔记(一) 概述
- VB高效导入Excel2003和Excel2007文件到MSHFlexGrid控件显示