OC中对于属性的总结(@property)
在没有属性之前:
对成员变量进行改动都要用到设置器:setter来改动
Person *per =[[Person alloc] init];
对象通过设置器对成员变量内容进行修该
[per setName:@"你好"];
要通过訪问器:getter来进行取值
属性的出现 ,简化了代码
1.属性
属性是写在.h中
在XCode4.5之后,属性一共能够做了三件事:
1.声明了设置器:setter和訪问器:getter
2.实现了设置器和訪问器
3.声明了一个成员变量,成员变量命名会在属性名前面加一个下划线
(总结)
详细的数据存储还是有成员变量来完毕,属性值只是帮助程序猿完毕一些繁琐的工作,简化代码
属性用 @property 来表示
样例:比方定义一个学生类的年龄对象
首先创建一个学生类,之后直接用属性来创建年龄对象
在学生类的.h文件里:
@property NSInteger age;
这样一个年龄对象就建好了
一个属性完毕了在对象.h中的声明,完毕了setter,getter在.h中的声明,完毕了setter,getter在.m中的实现三件事
2.属性的属性
(1) 读写的控制: readonly和readwrite
- readonly:仅仅读:
设置之后,属性就没有setter,在设置了仅仅读之后,就不能够对成员变量进行改动了 - readwrite:读写:
能够进行訪问与读取
3.原子性的控制
在整个过程中系统通过原子性 atomic来监控实物在整个过程中偶遇没有完毕,可是对于我们来讲,我们仅仅是对数据进行简单的赋值,一般我们都会用nanatomic,不进行监控
// 通过原子性atomic来监控实物在整个过程中有没有完毕,可是一般来讲我们就是对数据的简单赋值,一般我们这部分用nonatomic
(atomic)
@property (atomic)NSString *sex;
(nonatomic)
@property(nonatomic)NSString *color;
4.语义设置
copy , assign , retain
1.retain一般用在对象类型, 比方我们自己写的类,还有数组NSArray中会用到
2.assgin 一般用在NSInteger和CGFloat中,由于他们在栈区,不须要内存管理,所以用assgin
3.copy 一般仅仅会用在字符串中
样例:
@property(nonatomic ,copy)NSString *color;
@property(nonatomic ,assign)NSInteger age;
@property(nonatomic ,assign)CGFloat score;
@property(nonatomic ,retain)NSArray *arr;
注意:
在XCode4.5版本号之前另一个关键词的定义
在.m文件里须要有一个关键词@sythesize才干实现setter和getter
格式 :关键词 属性名=成员变量名
@synthesize name = _name;
OC中对于属性的总结(@property)的更多相关文章
- OC中的属性、方法及内存管理
普通方法:关注(代表)对象可以”干什么”,过程中需要实例变量.-(void)show;输出 … 访问属性 属性:属性专门处理实例变量.(程序执行过程当中) 初始化方法:一创建对象(第一时间 ...
- Qt 中的属性系统(Property System)
21 人赞同了该文章 本节内容主要讲解我对 Qt 属性系统的理解.官方文档参考 The Property System. 如何理解"属性系统"这个概念? 一般我们说一个类有什么属性 ...
- OC 中的属性
自动合成 (autosynthesis) @property 语法,会做下面两件事情 自动生成存取方法 由编译器生成,编辑器里不会看到这些方法. 向类中添加适当类型的实例变量 在属性前加下划线,作为实 ...
- OC中成员属性 成员变量
比如用property声明一个变量属性 然后我们会为它用懒加载的方式重写get方法 然后我们在使用这个变量的时候,都是用self.itemArray,为什么这样用比较好呢,这是因为self.是对属性的 ...
- Objective-C中的属性机制
Objective-C 2.0中的属性机制为我们提供了便捷的获取和设置实例变量的方式,也可以说属性为我们提供了一个默认的设置器和访问器的实现.在学习OC中属性之前我们先要知道为什么要为变量实现gett ...
- OC中@property属性关键字的使用(assign/weak/strong/copy)
OC中@property属性关键字的使用(assign/weak/strong/copy) 一.assign 用于 ‘基本数据类型’.‘枚举’.‘结构体’ 等非OC对象类型 eg:int.bool等 ...
- Objective-C中属性及其特质@property、attribute
属性: 属性@property和属性attribute不同,@property在OC里有自己的一套专对实例变量的处理机制.attribute我们可以特指属性所具有或遵循的特质. 使用属性,编译器就会自 ...
- OC中属性及方法
1.声明式属性 a.实例变量 b.声明属性 自动生成setter/getter方法 .h ->@property 属性类型 属性名; .m ...
- OC中两个关键字的作用:@property和@synthesize
两个关键字的使用:@property和@synthesize 一.@property关键字这个关键字是OC中能够快速的定义一个属性的方式,而且他可以设置一些值,就可以达到一定的效果,比如引用计数的问题 ...
随机推荐
- 【Django】Web框架本质
目录 根据不同的路径返回不同的内容 普通版 函数版 函数进阶版 返回具体的HTML文件 让网页动态起来 服务器和应用程序 wsgiref 模块 @ * 我们可以这样理解:所有的==Web应用本质上就是 ...
- hibernate : object references an unsaved transient instance 问题
save顺序问题---比如学生表和班级表..学生表里有班级ID的外键.一对多的关系. 你save的时候应该先save班级,再save学生..否则学生的外键没有对应的值,引发异常
- jvm 性能分析
VM本身提供了一组管理的API,通过该API,我们可以获取得到JVM内部主要运行信息,包括内存各代的数据.JVM当前所有线程及其栈相关信息等等.各种JDK自带的剖析工具,包括jps.jstack.ji ...
- Google开源新的 RISC-V IP核: “BottleRocket”(https://cnrv.io)
BottleRocket是RISCV RV32IMC的实现. Google在2017年11月29日在Github上非官方开源了BottleRocket的RTL代码,同时表明这并不是一个官方支持的Goo ...
- CentOS 7.0yum安装MySQL
CentOS 7.0yum安装MySQL 1.下载mysql的repo源 $ wget http://repo.mysql.com/mysql-community-release-el7-5.noar ...
- Android SecurityException
public boolean checkNetwork() { boolean result = false; try { Context context = this.getApplicationC ...
- angular入门(基础篇)
一.什么是AngularJs? AngularJs是一个JavaScript框架,通过指令扩展了HTML,并且通过表达式绑定数据到HTML. AngularJs使得开发现代的单页面应用程序(SPA:S ...
- ELK+KAFKA安装部署指南
一.ELK 背景 通常,日志被分散的储存不同的设备上.如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志.这样是不是感觉很繁琐和效率低下.当务之急我们使用集中化的日志管理,例如: ...
- GCC中-fpic解惑(转载)
参考: 1.<3.18 Options for Code Generation Conventions>2.<Options for Linking>3.<GCC -fP ...
- hive load文件第一个字段为NULL
在hive中,通常须要载入外部数据源.load文件时.第一个字段会出现NULL. 比如: 1.运行load语句: LOAD DATA LOCAL INPATH 'test.txt' OVERWRITE ...