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

  1. readonly:仅仅读:

    设置之后,属性就没有setter,在设置了仅仅读之后,就不能够对成员变量进行改动了

  2. 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;
时间: 2024-10-10 17:37:27

OC中对于属性的总结(@property)的相关文章

OC中的属性特征

在刚开始学习oc的过程中,一直对声明完返回值后的属性特征不咋明白啥意思,今天特地找了一下资料,彻底的明白其中的意思. oc中的属性特征主要有assign,copy,retain这三个主要的,还有readonly,readwrite.   另外,atomic和nonatomic:以及strong,weak. assign主要是针对基础类型数据和c数据类型的简单赋值,而且它不调用索引计数器(retain count). retain主要是指调用oc中的对象,对oc中的对象进行赋值(主要针对NSObj

OC中的属性、方法及内存管理

普通方法:关注(代表)对象可以”干什么”,过程中需要实例变量.-(void)show;输出 … 访问属性    属性:属性专门处理实例变量.(程序执行过程当中)    初始化方法:一创建对象(第一时间),给实例变量赋值.    工厂方法:只一个方法,帮我们解决创建对象问题.初始化对象的问题.工厂方法创建对象最简单.(对象达到一定量级) 补:在类方法中,可以调用类中创建的实例的实例方法或实例变量. 算法.设计模式:是人们总结的一种规律,一种思想. 1.单例模式    是一种特殊的工厂方法.    

OC中成员属性 成员变量

比如用property声明一个变量属性 然后我们会为它用懒加载的方式重写get方法 然后我们在使用这个变量的时候,都是用self.itemArray,为什么这样用比较好呢,这是因为self.是对属性的访问,编译器在检测到用@property声明的属性时,会自动为属性生成setter和getter,如果自己重写setter或getter,则编译器会跳过自动生成,使用自定义的setter和getter,所以当用self.这种方式时(并在等号右边调用时),这时就会进入到我们自定义的懒加载方法.也就是说

OC中属性self.a与_a访问的区别

在OC中我们可以通过指令@property定义属性. OC对属性封装了许多方法,同时也会自动实现一些方法,相比实例变量,感觉更加面向对象些. 一般定义属性的方法如下,在Class Test中定义属性int a. @interface Test:NSObject @property int a; -(void) changeAValue:(int) newValue; @end 在类的实例方法中,我们可以用下面两种方式来访问a属性: 1.直接用属性名访问: -(void) changeAValue

iOS开发几年了,你清楚OC中的这些东西么1

前言 几年前笔者是使用Objective-C进行iOS开发, 不过在两年前Apple发布swift的时候,就开始了swift的学习, 在swift1.2发布后就正式并且一直都使用了swift进行iOS的开发了, 之后就是对swift持续不断的学习, 近来swift3.0的发布, 更多的人会选择swift来进行iOS的开发看上去更是成为了一种趋势, 不过一个合格的iOS开发者对oc以及c语言的掌握是必不可少的技能, 本篇中主要是写一些大家平时都可能用到但是不一定知道的oc的东西 1.oc中的对象的

Objective-C中的属性机制

Objective-C 2.0中的属性机制为我们提供了便捷的获取和设置实例变量的方式,也可以说属性为我们提供了一个默认的设置器和访问器的实现.在学习OC中属性之前我们先要知道为什么要为变量实现getter和setter方法,我们先来了解一下实例的作用域. 实例变量的作用域如下: 1. @public : 共有的,该实例变量谁都可以访问: [email protected] :受保护的,该实例变量只能在该类和其子类内访问,父类protected的实例变量在子类中是private的默认是protec

OC中协议, 类目, 时间, 延展, 属性

必须接受marryprotocol协议, id<marryprotocol>基于类型的限定, 才能给实例变量赋值 @property (nonatomic, assign) id<marryprotocol> husband; 避免Optitonal没有实现的功能 if ([_husband respondsToSelector:@selector(driver)]) { [_husband driver]; } @required//必须实现的协议, 默认协议 - (void)s

OC中属性及方法

1.声明式属性    a.实例变量    b.声明属性        自动生成setter/getter方法        .h ->@property 属性类型 属性名;        .m ->@synthesize 属性名 = 实例变量名;    c.点语法2.IOS5中的属性    a.实例变量  省        会自动生成实例变量,实例变量名 等于 _属性名    b.声明属性        @property 属性类型 属性名;        @synthesize 属性名 =

iOS中属性及其特质@property、attribute

属性: 属性@property和属性attribute不同,@property在OC里有自己的一套专对实例变量的处理机制.attribute我们可以特指属性所具有或遵循的特质. 使用属性,编译器就会自动编写访问这些属性所需的方法,此过程叫做“自动合成”(autosynthesis).自动合成的过程是编译器在编译期执行.除此之外,编译器还要自定向类中添加适当类型的实例变量,并且在属性名前面加下划线,以此作为实例变量的名字.也可以用@synthesize 类指定实例变量的名字: 如:用@proper