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

    项目文件用途说明: config.py   ,  此文件主要存储一些配置信息,如数据库连接串.debug模式串等. exts.py      ,  此文件装载第三方库实例对象,如sqlalchemy ...

  2. 感知机、logistic回归 损失函数对比探讨

    感知机.logistic回归 损失函数对比探讨 感知机 假如数据集是线性可分的,感知机学习的目标是求得一个能够将正负样本完全分开的分隔超平面 \(wx+b=0\) .其学习策略为,定义(经验)损失函数 ...

  3. ie9上传文件

    兼容ie9文件上传,解决ie9下提示下载或保存 如果不考虑ie9兼容性,实现[上传图片]大致的思路如下: 由于公司是将所有上传的图片都放到[代理服务器]里.所以[上传图片]其实是上传到[代理服务器]. ...

  4. 微软develop apps在QQ上部分功能的实现

    最近我对微软的develop apps的文档进行了简读,在感叹UWP在支持服务上的全面的同时,我不禁在在常用的APP上对于这些功能支持进行了部分的寻找对应.而我进行功能对照的,就是平时很常用的一款手机 ...

  5. python 变量,if,while,运算符

    变量由变量名 赋值 值 a = 1 ###### 必须是一个等于号 一个等于号是赋值 变量的命名规则: 1.数字,字母,下划线组成 2.数字不能在前面 3.区分大小写 4.禁止使用python关键字 ...

  6. 工作了才发现display全忘了

    CSS display属性这几天用的我头疼 人老了 健忘了 1.inline(行内元素) 是元素变成行内元素,拥有行内元素特性,共享属性,不会吃独食! 共享经济时代 inline是主导大哥 !impo ...

  7. 谈谈Java中的代理模式

    首先来看一下代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用, 其特征是代理类与 ...

  8. 《http权威指南》读书笔记5

    概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...

  9. 【Spark调优】小表join大表数据倾斜解决方案

    [使用场景] 对RDD使用join类操作,或者是在Spark SQL中使用join语句时,而且join操作中的一个RDD或表的数据量比较小(例如几百MB或者1~2GB),比较适用此方案. [解决方案] ...

  10. java IO流之详细总结

    什么是io流? 分为两种: 输入流:可以从文件中读取到程序,从源数据源读取到程序,叫做输入流. 输出流:可以从程序中读取到文件,从程序写,使用输出流,写入到文件中.叫做输出流. 使用File操作文件或 ...