下面仅仅是一些基本知识,可能有些知识用的比较少,不过知道怎么使用或者了解这个知识,还是不错的,毕竟技多不压身嘛!读完这篇文章大约需要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讲解(下)相关推荐

  1. 计算机应用需要几级英语,{急}计算机应用专业对英语要求高么?一般需英语哪些方面,麻烦你们知道的讲解下,谢谢了...

    {急}计算机应用专业对英语要求高么?一般需英语哪些方面,麻烦你们知道的讲解下,谢谢了以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来 ...

  2. 设计模式-结构型模式讲解下(装饰者、外观、代理)

    一.结构型设计模式 上篇,我们讲解了结构型设计模式的适配器.桥接.组合.享元模式. 文章地址:https://blog.csdn.net/qq_43692950/article/details/120 ...

  3. java 注解_通俗易懂的讲解下Java注解

    对于Java注解,我咨询过一些身边的人,很多人表示: 知道怎么用,不熟悉 不知道你是不是这样?在我没有系统性的学习一边注解的时候,我也是如此,在我花时间学习过注解之后,我觉得,对于注解,最重要的在于理 ...

  4. 9000字,通俗易懂的讲解下Java注解

    对于Java注解,我咨询过一些身边的人,很多人表示: 知道怎么用,不熟悉 不知道你是不是这样?在我没有系统性的学习一边注解的时候,我也是如此,在我花时间学习过注解之后,我觉得,对于注解,最重要的在于理 ...

  5. 9000字通俗易懂的讲解下Java注解,你还看不明白?,实战分析SpringBoot整合JSON

    @Repository public class UserBean { private String name; private int age; } 这里的@Repository就是一个注解,看这段 ...

  6. 9000字通俗易懂的讲解下Java注解,你还看不明白?,linux操作系统基础与应用答案

    自定义注解(实际很少) JDK内置注解(@Override检验方法重写) 框架中的注解 不知道这个能不能理解,就是说,对于注解而言,是有几种不同分类的,首先,我们可以自己写一个注解出来(下面会讲),另 ...

  7. 9000字通俗易懂的讲解下Java注解,你还看不明白?

    对于Java注解,我咨询过一些身边的人,很多人表示: 知道怎么用,不熟悉 不知道你是不是这样?在我没有系统性的学习一边注解的时候,我也是如此,在我花时间学习过注解之后,我觉得,对于注解,最重要的在于理 ...

  8. 鸿蒙系统的挑战,简单的讲解下何为鸿蒙系统,可能会挑战你的认知颠覆你的想象...

    本帖最后由 一梦盛夏 于 2020-12-2 17:33 编辑 这篇文章可能会颠覆你的想象,挑战你的认知,请耐心阅读. 今天不说专业术语,全部用比喻方式来聊,这样会更明白一些,也欢迎大家一起来讨论. ...

  9. linux串口环形缓冲区,能不能讲解下串口环形缓冲区的概念?

    有段串口收发程序,看起来费劲,感觉可能是环形收发,能不能普及下思路? /* 变量声明 */ INT8U * p_uart1SendBuf;                                ...

最新文章

  1. 技术直播:讲一个Python编写监控程序的小故事
  2. 进程间通信(三)—信号量
  3. java float 四舍五入_JAVA如何把一个float四舍五入到小数点后指定位数.
  4. 无法找到python第三方库的处理方法
  5. Rancher--Docker容器管理工具的安装与启动
  6. Android WebView对https无响应
  7. mac下virtualbox虚拟机centos联网问题
  8. Trick (八)——list 模拟 stack(Python)
  9. 黑马程序员——面向对象篇之封装
  10. python查看微信撤回消息_python实现文件助手中查看微信撤回消息
  11. mysql实例备份和单库备份_史上最简单的MySQL数据备份与还原教程(上)(三十五)...
  12. jade2html 在线转换,jade转化为html
  13. android 字体显示框架,XUI 一个简洁而又优雅的Android原生UI框架
  14. windows10无法连接远程桌面的问题的解决方法
  15. 【Matlab图像去噪】改进非局部均值红外图像混合噪声【含源码 1640期】
  16. 驱动蓝屏代码及原因,解决方案
  17. 软件项目管理 第12讲 软件项目跟踪
  18. 程序员的内涵之基于SDK的Windows应用程序框架代码详解
  19. 我人生的第一桶金来自于:宋叔日记
  20. 论文排版-CTex的基本使用方法

热门文章

  1. 【MVC】ASP.Net MVC 4项目升级MVC 5的方法
  2. 差点吓尿,手贱不要乱点support native debug
  3. AsyncTask 实现异步处理任务
  4. 大数据学习之路(七)——学习小结
  5. 为拯救爸妈朋友圈,达摩院造了“谣言粉碎机”
  6. Ubuntu中安装Pycharm
  7. Angular2视图操作之ViewChildViewChildren
  8. CSS_伪元素_伪类
  9. 一些常用的图像数据库
  10. 技术网站 --入门无忧网