@property、@sythesize以及Ivar和@dynamic讲解(下)
下面仅仅是一些基本知识,可能有些知识用的比较少,不过知道怎么使用或者了解这个知识,还是不错的,毕竟技多不压身嘛!读完这篇文章大约需要5-10分钟左右!!!
一、@property
1、在头文件中:
@property int count;
面对上面的一行代码
- (int)count; -(void)setCount:(int)newCount;
通过@property int count ;这样定义完成之后,我们就可以使用这个属性啦,而且这个属性就会自动有setter和getter方法。
例如:
@property NSString *userName;
第一步生成_userName属性
第二步为_userName属性自动生成set/get方法啦!!!
>>>>>Problem @property 增强
问题1:使用property增强后,什么时候要重写getter/setter方法?
(1).使用property增强,只会生成最简单的getter/setter方法的声明和实现,并不会对传入的数据进行过滤。
(2).如果想对数据进行过滤,那么我们就必须重写getter/setter方法。
问题2:重写getter/setter方法有哪些注意点?
(1)如果重写了setter方法,那么property就只会生成getter方法
(2)如果重写了getter方法,那么property就只会生成setter方法
(3)如果同时重写了getter/setter方法,那么property就不会自动帮我们生成私有的成员变量(带_的成员变量)
二、@synthesize
#import <Foundation/Foundation.h> #import "User.h" //有时候我们不想定义属性为_开头的 //这时候我们就可以使用@synthesize,来修改我们想要的属性名 //这时候属性_userName变成了$userName @implementation User @synthesize userName = $userName; @end
因为我们使用@property定义属性之后,如果我们想修改这个属性的名称,我们可以使用@synthesize关键字来对名称进行修改。
>>>>>>注意点:
@synthesize age;代表:
(1).setter和getter实现中会访问@synthesize后同名成员变量age
(2).如果成员变量age不存在,就会自动生成一个@private的成员变量age
三、Ivar(成员变量)
Ivar可以理解为类中的一个变量,主要作用是用来保存数据的。@property可以说@property = Ivar + setter + getter
>>>>lvar 用的并不是特别多,大家用的时候也不会太在意这个
@dynamic和@synthesize的异同
a. 通过@synthesize 指令告诉编译器在编译期间产生getter/setter方法
b. 通过@dynamic指令,告诉编译器,属性的 setter 与 getter 方法由用户自己实现,不会自动生成,如果没有自动生成在运行时调用会crash
c. 有的存取是在运行时动态创建的,如在CoreData的NSManagedObject类使用的某些。如果你想这些情况下,声明和使用这些属性,但要避免缺少方法在编译时的警告,你可以使用@dynamic动态指令,而不是@synthesize合成指令
转载于:https://www.cnblogs.com/guohai-stronger/p/9034831.html
@property、@sythesize以及Ivar和@dynamic讲解(下)相关推荐
- 计算机应用需要几级英语,{急}计算机应用专业对英语要求高么?一般需英语哪些方面,麻烦你们知道的讲解下,谢谢了...
{急}计算机应用专业对英语要求高么?一般需英语哪些方面,麻烦你们知道的讲解下,谢谢了以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来 ...
- 设计模式-结构型模式讲解下(装饰者、外观、代理)
一.结构型设计模式 上篇,我们讲解了结构型设计模式的适配器.桥接.组合.享元模式. 文章地址:https://blog.csdn.net/qq_43692950/article/details/120 ...
- java 注解_通俗易懂的讲解下Java注解
对于Java注解,我咨询过一些身边的人,很多人表示: 知道怎么用,不熟悉 不知道你是不是这样?在我没有系统性的学习一边注解的时候,我也是如此,在我花时间学习过注解之后,我觉得,对于注解,最重要的在于理 ...
- 9000字,通俗易懂的讲解下Java注解
对于Java注解,我咨询过一些身边的人,很多人表示: 知道怎么用,不熟悉 不知道你是不是这样?在我没有系统性的学习一边注解的时候,我也是如此,在我花时间学习过注解之后,我觉得,对于注解,最重要的在于理 ...
- 9000字通俗易懂的讲解下Java注解,你还看不明白?,实战分析SpringBoot整合JSON
@Repository public class UserBean { private String name; private int age; } 这里的@Repository就是一个注解,看这段 ...
- 9000字通俗易懂的讲解下Java注解,你还看不明白?,linux操作系统基础与应用答案
自定义注解(实际很少) JDK内置注解(@Override检验方法重写) 框架中的注解 不知道这个能不能理解,就是说,对于注解而言,是有几种不同分类的,首先,我们可以自己写一个注解出来(下面会讲),另 ...
- 9000字通俗易懂的讲解下Java注解,你还看不明白?
对于Java注解,我咨询过一些身边的人,很多人表示: 知道怎么用,不熟悉 不知道你是不是这样?在我没有系统性的学习一边注解的时候,我也是如此,在我花时间学习过注解之后,我觉得,对于注解,最重要的在于理 ...
- 鸿蒙系统的挑战,简单的讲解下何为鸿蒙系统,可能会挑战你的认知颠覆你的想象...
本帖最后由 一梦盛夏 于 2020-12-2 17:33 编辑 这篇文章可能会颠覆你的想象,挑战你的认知,请耐心阅读. 今天不说专业术语,全部用比喻方式来聊,这样会更明白一些,也欢迎大家一起来讨论. ...
- linux串口环形缓冲区,能不能讲解下串口环形缓冲区的概念?
有段串口收发程序,看起来费劲,感觉可能是环形收发,能不能普及下思路? /* 变量声明 */ INT8U * p_uart1SendBuf; ...
最新文章
- 技术直播:讲一个Python编写监控程序的小故事
- 进程间通信(三)—信号量
- java float 四舍五入_JAVA如何把一个float四舍五入到小数点后指定位数.
- 无法找到python第三方库的处理方法
- Rancher--Docker容器管理工具的安装与启动
- Android WebView对https无响应
- mac下virtualbox虚拟机centos联网问题
- Trick (八)——list 模拟 stack(Python)
- 黑马程序员——面向对象篇之封装
- python查看微信撤回消息_python实现文件助手中查看微信撤回消息
- mysql实例备份和单库备份_史上最简单的MySQL数据备份与还原教程(上)(三十五)...
- jade2html 在线转换,jade转化为html
- android 字体显示框架,XUI 一个简洁而又优雅的Android原生UI框架
- windows10无法连接远程桌面的问题的解决方法
- 【Matlab图像去噪】改进非局部均值红外图像混合噪声【含源码 1640期】
- 驱动蓝屏代码及原因,解决方案
- 软件项目管理 第12讲 软件项目跟踪
- 程序员的内涵之基于SDK的Windows应用程序框架代码详解
- 我人生的第一桶金来自于:宋叔日记
- 论文排版-CTex的基本使用方法