1218.2——property关键字

由于我们定义的成员变量是私有的,所有外部是无法访问的,为了能够访问我们写set和get方法

但是由于代码量过于复杂冗长,引入了@property (声明)和 @synthesize(实现)

后来又简化成只有@property,而省略了@synthesize,自动生成

最后省略了成员变量改为属性,去掉了大括号,用@property属性一句话写完

  @property (nonatomic,strong)NSString * name;

  @property (nonatomic,assign)int age;

  1.定义了一个属性,name

  2.声明了set get方法

  3.实现了setter getter方法

定义了一个吃面包的函数,在内部方法调用内部属性的时候,要用_name,因为@synthesize虽然省略了,但是该实现的还是实现了

_name =[self name] =self.name

-(void)eat:(Bread *)aBread{

NSLog(@"%@吃掉了 %@ 品种的面包",_name,aBread.style);

}

main中赋值和调用的时候有两种方式

1.  hr.name = @"huoran";

    NSLog(@"%@",hr.name);

2.  [hr setAge:22];

   NSLog(@"%d",[hr age]);

关键字

atomic  原子操作 线程安全 有枷锁解锁机制 安全  (默认)

nonatomic 非原子操作 线程不安全 速度快 效率高  (一般使用)

strong  声明一个非自己创建的对象的所有权

    如果创建所有权之后 放弃只会放弃所有权,而不会释放内存 所有的都放弃所有权之后 系统会自动释放内存

    防止A创建物体后B使用,A放弃了之后,B就再也找不到了这种情况。

retain  和strong一样

weak  只使用而不产生所有权

copy  重新复制对象 好处在于和原来的对象脱离了关系不受其影响 坏处在于内存加大了

   与Strong的区别就是是否脱离出来

assign  对于C语言的基本数据类型用assign

readonly  只读 相当于只提供getter方法

readwrite  读写 默认

时间: 2024-12-09 21:27:07

1218.2——property关键字的相关文章

魏兆辉的IOS基础学习笔记之十 OC语言基础-05 @property关键字

在上一篇笔记中是学习了怎样手动编写getter和setter方法,相对来说复杂一些,今天学习了@property关键字就可以自动的生成这两个方法,十分方便, 另外在内存管理中,也可以使用这个关键字,省去了重写dealloc函数的麻烦,只需要写进去关键词就可以. 让系统自动合并setter和getter只要两个步骤: (1). 在类接口部分使用@property指令定义属性. (2). 在类实现的部分使用synthesize指令声明该属性即可. 所有,上面例子中定义Engine的存取方法我们可以修

@property关键字的使用

1.作用:@property是用来快速生成属性和属性的getter,setter方法的 2.用法1.当类有声明属性时,可以用@property 生成属性的get,set方法 @interface Student { int age; } @end //该句就相当于原始的get,set方法 @property int age; 此时类的实现中实现get,set方法就得使用@syhthesize关键字 @implementation Studen //代表了getset 方法的实现, @syhthe

黑马程序员---OC基础5【点语法】【@property关键字】【@synthesize关键字】【id类型】【动态类型】【构造方法】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [点语法] 1 1.使用“点语法” 2 Student *stu= [[Student alloc]init]; 3         //调用set方法 4         [stu setAge:20]; 5         [stu setName:@"Jone"]; 6         //点语法:xcode的特性,Xcode帮我们做了代码替换 7         //点语法,

Objective-C @property关键字

OC中提供了@property的关键字来声明变量,来简化开发人员手写getters和setters,同时不破坏面向对象的封装性,这样的好处是在一个有很多属性的Model类里,无需再为每一个属性写一套getters和setters,让代码更简洁.下面看代码的示例. // // Goods.h // 07_Property // // Created by apple on 14-11-12. // Copyright (c) 2014年 cc. All rights reserved. // #i

ARC\MRC下property关键字的用法

使用属性关键字前,需要先理解属性关键字的作用.其实<简单来说...>就是指导底层如何生成set.get方法的,如果不自己定义set.get方法,系统将会自动为你生成,但如何生成依据的就是这些属性关键字,不同的属性关键字的组合将决定set.get方法的具体实现,实现不同,功能自然也就不同了... -----------------------------------------------------------------------------------------------------

OC基础--关键字@property 和 @synthesize

一.@property关键字需要掌握的知识: 1.用在@interface中,用来自动生成setter和getter的声明 例:@property int age;--相当于执行了右边的代码-->-(void) setAge:(int) age; -(int) age; 二.@synthesize关键字需要掌握的知识: 1.用在@implementation中,用来自动生成setter和getter的实现 例:@synthesize age = _age; 2.注意:在 @synthesize

IOS 关键字self,super,copy, retain, assign , readonly , readwrite, nonatomic、 @synthesize、@property、@dynamic

IOS 关键字self,super,copy, retain, assign , readonly , readwrite, nonatomic.                     @synthesize.@property.@dynamic #synthesize关键字: 根据@property设置,自动生成成员变量相应的存取方法,从而可以使用点操作符来方便的存取该成员变量 . @implementation 关键字,表明类的实现 @end 结束 self 关键字 :类似于java中的t

盘点iOS开发中property属性常用关键字

一.关键字说明 1.@synthesize:自动生成成员变量相应的存取方法,可以使用点语法操作该变量的存取. 2.@implementation:  表明类的实现  ,以@end 结束. 3.self  :类似java语言当中的this ,是隐藏指针  指向接受消息的对象的指针 .消息所调用的方法使用该指针参数查找它要使用的实例. 4.super : 调用父类的方法 .    self = [ super init];  判断是否可以成功初始化 如果父类成功初始化 那么将会赋值给 self  ,

iOS Category 和 Protocol 中的 Property 你们真的会了么?

一.property 合成存取器: @property的格式: 1 @property (修饰列表) 变量类型 变量名; Xcode4.4之前: @property使编译器自定生成set/get方法声明. @synthesize自动生成set/get方法的实现 @synthesize还会自动生成私有成员变量 Xcode4.4以后: 不用再写@synthesize,编译器通过@property就能给我们生成set/get方法的声明和实现,默认生成成员变量:_propertyName 用@prope