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

@property、@sythesize以及Ivar和@dynamic讲解(下)的更多相关文章

  1. Siki_Unity_2-1_API常用方法和类详细讲解(下)

    Unity 2-1 API常用方法和类详细讲解(下) 任务101&102:射线检测 射线origin + direction:射线检测:射线是否碰撞到物体 (物体需要有碰撞器),碰撞物体的信息 ...

  2. 讲解下for循环的用法,加深记忆

    引子 这是一段很简单的代码,但是即便是这么简单的东西,这里我们还是需要说一下. 关于for循环整个执行流程就是,先执行var i=10,然后到了第二个语句,判断10是否大于0,很明显为true,所以此 ...

  3. ? 原创: 铲子哥 搜狗测试 今天 shell编程的时候,往往不会把所有功能都写在一个脚本中,这样不太好维护,需要多个脚本文件协同工作。那么问题来了,在一个脚本中怎么调用其他的脚本呢?有三种方式,分别是fork、source和exec。 1. fork 即通过sh 脚本名进行执行脚本的方式。下面通过一个简单的例子来讲解下它的特性。 创建father.sh,内容如下: #!/bin/bas

    ? 原创: 铲子哥 搜狗测试 今天 shell编程的时候,往往不会把所有功能都写在一个脚本中,这样不太好维护,需要多个脚本文件协同工作.那么问题来了,在一个脚本中怎么调用其他的脚本呢?有三种方式,分别 ...

  4. webpack4基础入门操作(二)(讲解下webpack的配置内容)

    前序:我之所以开始写这个系列,是因为我最近出去看了下外面的情况,发现技术更新的脚步太快了.我的技术栈已经完全落伍了. 所以准备今年学习写新的东西,而React.webPack4就是我的第一步.前面我看 ...

  5. 求通俗讲解下tensorflow的embedding_lookup接口的意思

    https://www.zhihu.com/question/48107602 作者:王凯链接:https://www.zhihu.com/question/48107602/answer/15980 ...

  6. 品茗论道说广播(Broadcast内部机制讲解)(下)

    下面我们来看,递送广播动作中最重要的processNextBroadcast(). 3.2 最重要的processNextBroadcast() 从processNextBroadcast()的代码, ...

  7. @property、@synthesize和dynamic的用法

    原文:  http://blog.csdn.net/hherima/article/details/8622948 @代表“Objective-C”的标志,证明您正在使用Objective-C语言 O ...

  8. linux下umask的使用讲解

    最近开始学习linux ,看完马哥的linux课程关于umask的这个部分, 写这篇博客希望加深下我对umask的理解 和对umask不太清楚的博友一些帮助. 1 umask 是什么 当我们登录系统之 ...

  9. sencha touch 入门系列 (八)sencha touch类系统讲解(下)

    接着上一讲,我们通过一组代码来讲解一下st的类的一些属性: Ext.define("MyConfig",{ config:{ website:"http://127.0. ...

随机推荐

  1. 20个Linux防火墙应用技巧

    转载 1.显示防火墙的状态 以root权限运行下面的命令: # iptables -L -n -v 参数说明: -L:列出规则. -v:显示详细信息.此选项会显示接口名称.规则选项和TOS掩码,以及封 ...

  2. DOM对象和jQuery对象的转换

    <script type="text/javascript"> //js的页面加载事件 window.onload = function () { //获取DOM对象 ...

  3. 学习Python第六天

    今天我们讲讲数据类型中的集合,博客写得有点糙,后续应该要进行优化优化了........ 集合:无序,不重复的数据组合,主要作用:去重,把一个列表变成集合,就自动去重了 基本语法:S = {1}类型为集 ...

  4. 判断Array/Object

    Object.prototype.isPrototypeOf()  /  Array.prototype.isPrototypeOf()if(typeof items === "object ...

  5. 背水一战 Windows 10 (99) - 关联启动: 关联指定的文件类型, 关联指定的协议

    [源码下载] 背水一战 Windows 10 (99) - 关联启动: 关联指定的文件类型, 关联指定的协议 作者:webabcd 介绍背水一战 Windows 10 之 关联启动 关联指定的文件类型 ...

  6. 探秘JS的异步单线程

    对于通常的developer(特别是那些具备并行计算/多线程背景知识的developer)来讲,js的异步处理着实称得上诡异.而这个诡异从结果上讲,是由js的“单线程”这个特性所导致的. 我曾尝试用“ ...

  7. JavaScript工作体系中不可或缺的函数

    一.函数的概念 日常生活中,我们要完成一件事,总是习惯先有一个计划,后期按照计划,一步一步执行,则能够完成,并且达到一定效果实现一定的功能.在编程的世界里,“功能”可称呼为“函数”,因此“函数”即一段 ...

  8. 吴恩达机器学习笔记33-评估一个假设输出(Evaluating a Hypothesis Outpute)

    当我们确定学习算法的参数的时候,我们考虑的是选择参量来使训练误差最小化,有人认为得到一个非常小的训练误差一定是一件好事,但我们已经知道,仅仅是因为这个假设具有很小的训练误差,并不能说明它就一定是一个好 ...

  9. 第77节:Java中的事务和数据库连接池和DBUtiles

    第77节:Java中的事务和数据库连接池和DBUtiles 前言 看哭你,字数:8803,承蒙关照,谢谢朋友点赞! 事务 Transaction事务,什么是事务,事务是包含一组操作,这组操作里面包含许 ...

  10. [Postman]查找替换(5)

    在邮差中查找和替换 在Postman中快速轻松地查找和替换API项目中的文本.Postman应用程序使您能够执行全局查找和替换操作,该操作可在其各种组件(如集合,环境,全局和打开选项卡)中无缝工作.这 ...