[email protected]和@synthesize

@porperty

@porperty是一个编译器指令

在Xocde4.4之前, 可以使用@porperty来代替getter/setter方法的声明, 也就是说我们只需要写上@porperty就不用写getter/setter方法的声明

2.编译器只要看到@property,就知道我们要生成某一个属性的getter/setter方法的声明

@propertyde格式

@property数据类型变量名



property增强

从Xcode4.4以后,对@property进行了增强, 以后只要利用一个@property就可以同时生成setter/getter方法的声明和实现

如果没有告诉@property要将传入的参数赋值给谁, 默认@property会将传入的属性赋值给_开头的成员变量

@property的使用场景

如果不想对传入的数据进行过滤, 仅仅是提供方法给外界操作成员变量, 那么就可以使用@property ,并且系统会自动给我们生成一个_开头的成员变量

使用property增强后,什么时候要重写getter/setter方法

使用property增强,只会生成最简单的getter/setter方法的声明和实现, 并不会对传入的数据进行过滤

如果想对传入的数据进行过滤, 那么我们就必须重写getter/setter方法

重写getter/setter方法有哪些注意点

如果重写了setter方法, 那么property就只会生成getter方法

如果重写了getter方法, 那么property就只会生成setter方法

如果同时重写了getter/setter方法, 那么property就不会自动帮我们生成私有的成员变量



@property修饰符

增强@property使用修饰符后的的格式

格式:

@property(属性修饰符) 数据类型变量名称;

@property 有哪些修饰符?各有什么作用?

1.readwrite: 代表既生成getter方法 , 也生成setter方法

默认情况下@property就是readwrite的

@property(readwrite) int age;

2.readonly: 代表只生成getter方法不生成setter方法

@property(readonly) NSString * name;

3.给getter方法起了一个别名为abc

- (void)setHeight:(double)height;

- (double)height;

给getter方法起了一个别名为abc

- (void)setHeight:(double)height;

- (double)abc;

@property(getter=abc) double height;

4.给setter方法起了一个别名为tiZhong

- (void)setWeight:(double)weight;

- (void)tiZhong:(double)weight;

@property(setter=tiZhong:) double weight;

程序员之间有一个约定, 一般情况下获取BOOL类型的属性的值, 我们都会将获取的方法名称改为isXXX

@property(getter=isMarried) BOOL married;



@synthesize

synthesize是一个编译器指令, 它可以简化我们getter/setter方法的实现

@synthesize age = _age; 在给age赋值时,编译器做了哪些事

@synthesize age = _age;

1.在@synthesize后面的age,告诉编译器, 需要实现哪个@property生成的声明

2.告诉@synthesize, 需要将传入的值赋值给谁和返回谁的值给调用者

如果在@synthesize后面没有告诉系统将传入的值赋值给谁, 系统默认会赋值给和@synthesize后面写得名称相同的成员变量@synthesize age;



[email protected]和@synthesize

时间: 2024-12-20 18:43:19

[email protected]和@synthesize的相关文章

黑马程序员 [email protected]和@synthesize

———Java培训.Android培训.iOS培训..Net培训.期待与您交流! ——— 1.@property 和@synthesize 的作用 (1) 通过@property可以自动生成属性的set,get方法的声明部分 生成的是set,get方法是哪个属性的,@property后面的名称就是属性去掉下划线后的部分 例如: - (void)setName: (NSString *)name; - (NSString *)name; 这两行代码可以用 @property (NSString *

黑马程序员--Objective-C之[email protected]和@synthesize关键字

property是Objective-C的关键词,与@synthesize配对使用,用来让编译好器自动生成与数据成员同名的方法声明.@synthesize则是用来生成对应声明方法的实现. 一.@property关键字 1.property的语法格式: @property (参数1,参数2)类型名字: 这里的参数,主要有以下三种: (1)setter/getter方法(assign/retain/copy) (2)读写属性(readwrite/readonly) (3)atomicity(nona

OC学习篇之[email protected]和@synthesize的使用

在之前一片文章我们介绍了OC中的内存管理:http://blog.csdn.net/jiangwei0910410003/article/details/41924683,今天我们来介绍两个关键字的使用:@property和@synthesize 一.@property关键字 这个关键字是OC中能够快速的定义一个属性的方式,而且他可以设置一些值,就可以达到一定的效果,比如引用计数的问题 下面来看一下他的使用方法: // // Person.h // 25_Property // // Creat

OC开发系列[email protected]和@synthesize

property和synthesize关键字 创建一个Person类. #import <Foundation/Foundation.h> @interface Person : NSObject { int _age; int _height; } - (void)setAge:(int)age; - (int)age; @end #import "Person.h" @implementation Person - (void)setAge:(int)age { _ag

[email&#160;protected]、self及类的本质

让代码书写更加简便 --1-- 设置器和访问器 1.1 setter 1.2 getter --2-- 类的本质 2.1 类类型的对象 2.2 类的本质 2.3 如何获取类对象 2.4 类对象的使用 2.5 类对象的存储 --3-- SEL类型 3.1 SEL --4-- @property关键字 4.1 基本概念 4.2 @property用法 4.3 @property使用注意事项 --5-- @synthesize关键字 5.1 @synthesize用法 5.2 @synthesize使

iOS开发核心语言Objetive C —— 编译器指令@[email&#160;protected]自定义构造方法及类工厂

本分享是面向有意向从事iOS开发的伙伴们,或者已经从事了iOS的开发者.如果您对iOS开发有极高的兴趣,可以与我一起探讨iOS开发,一起学习,共同进步.如果您是零基础,建议您先翻阅我之前分享的iOS开发分分钟搞定C语言系列,然后在开始Objective C语言的学习,如果您遇到问题也可以与我探讨,另外将无偿分享自己整理的大概400G iOS学习视频及学习资料,都是干货哦!可以新浪微博私信?关注极客James,期待与您的共同学习和探讨!!由于时间有限,每天在工作之余整理的学习分享,难免有不足之处,

$*和[email&#160;protected]之间区别代码分析

#!/bin/bash set 'apple pie' pears peaches for i in $*           /*单引号被去掉,循环单个字符输出*/ do echo $i done [[email protected] Ex_14.02-14.31]# sh 14-14-1 apple pie pears peaches -------------------------------------------------------------- #!/bin/bash set

[email&#160;protected]一个高效的配置管理工具--Ansible configure management--翻译(六)

无书面许可请勿转载 高级playbook Finding files with variables All modules can take variables as part of their arguments by dereferencing them with {{ and }} . You can use this to load a particular file based on a variable. For example, you might want to select a

【转载】 ERROR 1045 (28000): Access denied for user [email&#160;protected] (using password: NO)

来自:http://www.jb51.net/LINUXjishu/10981.html 错误描述: Mysql中添加用户之后可能出现登录时提示ERROR 1045 (28000): Access denied for user的错误.删除user.user中值为NULL的,或更新NULL为test 1)delete from user where user is NULL 2)update user set user='test' where user is NULL.意外的情况: 如果上述方