为什么80%的码农都做不了架构师?>>>   

1、什么是 @property 和 @synthesize ?

@property 和 @synthesize 实际是开发工具 Xcode 对代码的一种替换,我不确定它们是否是OC的语法,毕竟IOS开发基本是在 Xcode 上进行,它们的主要作用就是自动帮我们生成 getter 和 setter 方法,大大简化我们的代码,并且大部分人都这么做,有利于团队开发。

2、为什么要用 @property 和 @synthesize ?

a)当我们在 .h 文件写一个变量时,需要声明它的 getter 和 setter 方法,然后去 .m 文件实现,几个变量还行,如果数量多了, .h 和 .m 文件里就会充斥着代码几乎类似的 getter 和 setter 方法。

b)使用 @property 和 @synthesize 时就不需要再继续写 getter 和 setter 方法的声明和实现了,甚至连定义变量都不需要了,开发工具会自动帮我们把变量以及它的 getter 和 setter 方法都实现,虽然我们看不到,but they are there.

3、怎么使用 @property 和 @synthesize ?

Student.h

#import <Foundation/Foundation.h>@interface Student : NSObject@property int age;// 相当于
// - (void)setAge:(int)newAge;
// - (int)age;@end

 Student.m

@import "Student.h"@implementation Student@synthesize age;// 相当于
// - (void)setAge:(int)newAge {
//     age = newAge;
// }
// - (int)age {
//     return age;
// }@end

当然我们之前说过,成员变量最好开头加上下划线,例如:_age,在@synthesize后面赋值即可,开发工具会默认生成 _age 变量而不是 age

 Student.m

@import "Student.h"@implementation Student@synthesize age = _age;// 相当于
// - (void)setAge:(int)newAge {
//     _age = newAge;
// }
// - (int)age {
//     return _age;
// }@end

在 Xcode4.5以后,@synthesize可以省略不写,但它还是确实在那的,只是你看不见,它会默认给成员变量加下划线

Student.m

@import "Student.h"@implementation Student// @synthesize age = _age;@end

当你不拘于标准的 getter 和 setter 方法时,即想在 getter 或 setter 方法中添加一点自己的东西,这时你就只能自己重写了,开发工具无能为力

Student.m

@import "Student.h"@implementation Student- (int)age {_age += 10;return _age;
}@end

转载于:https://my.oschina.net/cobish/blog/340914

5、OC —— @property和@synthesize相关推荐

  1. Objective-C 点语法 成员变量的作用域 @property和@synthesize关键字 id类型

    点语法 1.利用点语法替换set方法和get方法 方法调用 Student *stu = [Student new]; [stu setAge : 18]; int age = [stu age]; ...

  2. Objective-C @property和@synthesize

    Objective-C中的特性@property和@synthesize 1. "@property"功能是声明当前属性为编译器自动生成set/get 方法 2. "@s ...

  3. IOS第三天(@property与@synthesize的用法)

    一.@property与@synthesize基本规范用法 1.@property 当编译器遇到@property时,会自动展开成getter和setter的声明 #import <Founda ...

  4. @property与@synthesize的差别

    上一篇文章我有讲到self.与_的差别,往往和这个问题相伴随的是我困惑的问题是"@property与@synthesize的差别" @property的使用方法 @interfac ...

  5. Objective-C中的@property和@synthesize用法

    @代表"Objective-C"的标志,证明您正在使用Objective-C语言 Objective-C语言关键词,@property与@synthesize配对使用. 功能:让编 ...

  6. Objective-C Property 和 Synthesize

    为什么80%的码农都做不了架构师?>>>    Objective-C中的@property.@synthesize及点语法都是与两个函数有关的,一是setter函数,另一个是get ...

  7. 黑马程序员--Objective-C之--@property和@synthesize关键字

    ------IOS培训期待与您交流! ------- property是Objective-C的关键词,与@synthesize配对使用,用来让编译好器自动生成与数据成员同名的方法声明.@synthe ...

  8. OC之@property和@synthesize

    在OC中经常使用get和set方法,但是当成员变量太多的时候,就要敲很多行get和set方法.在xcode4.4之前,为了简洁代码,可以使用@property声明get和set方法: @propert ...

  9. 属性详解(@property/@dynamic/@synthesize)

    上一篇文章讲到, OC 2.0之后属性一旦声明,如果没有readonly修饰的话,当前类自动生成了setter和getter方法的声明, 并且会自动生成对应的实例变量(下划线 + 属性名).而sett ...

  10. @property and @synthesize区别

    java的基础理解的. @property 相当于在java中的接口中使用,替代get  set方法,没有具体的方法操作. @synthesize 相当于在java中的类中使用,替代get  set方 ...

最新文章

  1. TI xDAIS的深入理解
  2. 迷宫寻路系列常用算法逻辑探究
  3. php redis 删除元素,redisTemplate.delete()不能删除元素
  4. easyPOI基本用法详解
  5. 使用MATLAB绘制周期信号的,周期信号频域分析及MATLAB实现.ppt
  6. Ubuntu 16.04 LTS误删系统内核或驱动导致无法上网解决方案
  7. xenomai linux测试,Xenomai 实时线程 select 测试
  8. [转] Centos 6.4 python 2.6 升级到 2.7
  9. CAD编辑指南5:输出高清图片和新建空白图纸
  10. ltp测试操作步详解(压力测试网站最详、下载、使用)
  11. 跳过Nexus7第一次开机设置的网络验证
  12. Cisco Packet Tracer路由器ip简单配置(网关)
  13. Python“文字游戏”
  14. java-php-python-springboot志愿者服务平台计算机毕业设计
  15. 微信小程序 获取 手机验证码 短信验证码 后端功能实现解析
  16. pyrouge和rouge在Linux上的安装方法以及结果比较
  17. 线性模型(二)-- 线性回归公式推导
  18. OrientDB初识-学习文档
  19. Phonegap事件之pause事件
  20. Could not resolve all files for configuration “: app: debug Compileclasspath“ mac开发 cordova build踩坑

热门文章

  1. 大工18春计算机原理在线作业答案,大工13春《计算机组成原理》在线作业2 及答案...
  2. jqgrid本地数据例子_FMS财务系统:日常数据核对与处理
  3. c++ vector、stack、queue、map用法总结
  4. npm和yarn科学设置淘宝镜像
  5. 请问两个div之间的上下距离怎么设置
  6. libvirt API管理hypervisors
  7. aauto的listview(类似于C#的datagrid) 支持文件拖拽获取名单
  8. 配置VIM语法高亮及自动缩进
  9. LeetCode_125_Python_验证回文串
  10. java 反序列化 怎么知道类_理解java中的序列化与反序列化