@property在xcode 4.5之前只是单纯的告诉编译器,“我在后面实现了对那个变量的setter和getter方法,你放心吧”,但是如果你不写synthesize配合的话就会出错。synthesize才是代替setter和getter的关键部分。

@synthesize在xcode4.5之前是配合@property使用,帮助你隐式了实现了一个setter和getter。如果你没有在interface里声明变量,它会帮你隐式的创建一个已下划线开头的同名变量,比如@synthesize myName = _myName;

在xcode4.5以后,由于改进了llvm编译器。@synthesize的工作全部由@property完成了,也就是说只需要声明@property就可以完全的创建一个变量。

至于interface里声明的变量和property声明的变量区别。我认为有两点:

1.放在.h文件里的property是一个public属性,可以供外部类访问。

2.property和ivars声明,本来就是两个东西,一个是通过setter和getter去访问对象,而另一个是直接访问。property可以通过setter实现数据绑定,而ivars是不行的.

所以,老外的一些建议是:
1.如果只是单纯的private变量,最好声明在implementation里.
2.如果是类的public属性,就用property写在.h文件里
3.如果自己内部需要setter和getter来实现一些东西,就在.m文件的类目里用property来声明

转载于:https://www.cnblogs.com/cuinidaye/p/4050144.html

【iOS开发】@property跟成员变量区别相关推荐

  1. 李洪强iOS开发Swift篇—02_变量和常量

    李洪强iOS开发Swift篇-02_变量和常量 一.语言的性能 (1)根据WWDC的展示 在进行复杂对象排序时Objective-C的性能是Python的2.8倍,Swift的性能是Python的3. ...

  2. iOS开发中各种关键字的区别

    1.一些概念 1.浅Copy:指针的复制,只是多了一个指向这块内存的指针,共用一块内存. 深Copy:内存的复制,两块内存是完全不同的, 也就是两个对象指针分别指向不同的内存,互不干涉. 2.atom ...

  3. iOS 开发_..和self...的区别以及使用

    相信很多初学者对_和self.之间的区别并没有一个大致的认识,那么下面对两者的区别做一个简单的介绍: 至于重写set和get方法,简要说明一下,当我们使用@property这用法之后,系统便会自动给我 ...

  4. 成员变量和属性区别(@property那点事儿)

    历史由来: 接触iOS的人都知道,@property声明的属性默认会生成一个_类型的成员变量,同时也会生成setter/getter方法.  但这只是在iOS5之后,苹果推出的一个新机制.看老代码时, ...

  5. java什么是局部变量_java局部变量是什么意思?Java中局部变量与成员变量有哪些区别?...

    大家知道Java中的局部变量吗?今天我们要了解的Java的局部变量及它和成员变量的区别,一起来看看吧. 什么是局部变量? 局部变量时就是只有一部分可见的变量,例如定义在方法中的变量,只有这百个方法才能 ...

  6. iOS开发·runtime原理与实践: 基本知识篇

    点击上方"iOS开发",选择"置顶公众号" 关键时刻,第一时间送达! 摘要:这篇文章首先介绍runtime原理,包括类,超类,元类,super_class,is ...

  7. java面向对象(类与对象,局部变量成员变量,基本类型和引用类型作为参数传递)...

    一.类和对象的区别 类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体 可以将玩具模型看作是一个类,将一个个玩具看作对象,从玩具模型和玩具之间的关系便可以看出类与对象之间的关系.类用于描述 ...

  8. c++模板类静态成员变量_一文讲透父子类中静态变量,成员变量初始化顺序原理...

    推荐: 从面试到入职到离职,我在B站工作的30天时光 爱了爱了,Alibaba顶级MySQL调优手册到手,加薪妥了 爱了爱了,Spring Cloud Alibaba内部微服务架构笔记真的太牛了 本文 ...

  9. 【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态

    一. Objective-C 方法详解 1. 方法属性 (1) OC 方法传参机制 Object-C 方法传参机制 : OC 中得参数传递都是值传递, 传入参数的是参数的副本; -- 基本类型 (值传 ...

最新文章

  1. HBase安装与命令行操作
  2. 进行博客博文管理的设计
  3. 2019微生物组—宏基因组分析技术研讨会第五期
  4. FPGA等效门数的计算方法
  5. python英语翻译-python制作英语翻译小工具
  6. STM32 电机教程 21 - 基于ST MCLIB无感FOC 与 有感FOC 代码差异分析
  7. spoj 375 Query on a tree (树链剖分)
  8. SAP XS Engine 里的 HANA live report metadata
  9. Windows之Fiddler抓HTTP和HTTPS请求
  10. Oracle.ManagedDataAccess 连接数据库用户名密码错误
  11. 2020-1024=996,2020年程序员还会难吗?
  12. [转]项目方面的做人处事
  13. 技巧----时间优化
  14. codeforces 460C - Present 二分加模拟
  15. eclipse基础实用教程
  16. cab和ocx什么区别_CAB的完整形式是什么?
  17. [Style Transfer]—Combining Markov Random Fields and Convolutional Neural Network for Image Synthesis
  18. 程序“媛”公号,越来越少了,这次推荐俩,轻拍!
  19. 《Effective Java》读书笔记五(枚举和注解)
  20. 1986~1991年JS时间差一小时的奇怪问题

热门文章

  1. 对多线程程序,单核cpu与多核cpu如何工作相关的探讨
  2. Latex初学者入门
  3. SCCM2012 R2实战系列之五:发现方法
  4. 明天就是第四周的实训开始的时间
  5. 使用ROW_NUMBER()查询:列名 'RowNumber' 无效。
  6. mysqldump 也可使用where条件导出的
  7. linux下tar压缩使用
  8. Exchange server 2007启用 设置pop3
  9. 如何给一个文件重命名?
  10. 商务口语:议价时可能用到的句子