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.
//

#import <Foundation/Foundation.h>

@interface Goods : NSObject {

    int price2;

}

// OC中提供了 @property关键字来声明变量
// 1. @property声明的变量可以直接生成public的getters和setters方法,无需自己实现了
// 2. @property声明的变量是private类型的
// 3. @property声明的变量名默认是“标准变量名”, 即变量前面加上_, 这里生成的就是 _price, 通过description()可以验证
// 4. @property声明的变量可以关联一个成员变量 @property int price = price2, 生成的getters和setters就是price2这个成员变量的了
// 5. @property声明的变量无需写在 {}中了
@property int price;

- (NSString *)description;

@end
//
//  Goods.m
//  07_Property
//
//  Created by apple on 14-11-12.
//  Copyright (c) 2014年 cc. All rights reserved.
//

#import "Goods.h"

@implementation Goods

- (NSString *)description {
    return [NSString stringWithFormat:@"price=%d", _price];
}

@end
//
//  main.m
//  07_Property
//
//  Created by apple on 14-11-12.
//  Copyright (c) 2014年 cc. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Goods.h"

int main(int argc, const char * argv[]) {

    @autoreleasepool {

        Goods* pGoods = [[Goods alloc]init];
        //使用自动生成的setPrice
        [pGoods setPrice:10];

        NSLog(@"%@", pGoods);

    }
    return 0;
}

测试输出的结果如下:

时间: 2024-12-17 17:25:20

Objective-C @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         //点语法,

1218.2——property关键字

由于我们定义的成员变量是私有的,所有外部是无法访问的,为了能够访问我们写set和get方法 但是由于代码量过于复杂冗长,引入了@property (声明)和 @synthesize(实现) 后来又简化成只有@property,而省略了@synthesize,自动生成 最后省略了成员变量改为属性,去掉了大括号,用@property属性一句话写完 @property (nonatomic,strong)NSString * name; @property (nonatomic,assign)int 

ARC\MRC下property关键字的用法

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

objective c, property, copy

@property (copy) nsmutablearray *array -copy, as implemented by mutable Cocoa classes, always returns their immutable counterparts. Thus, when an NSMutableArray is sent -copy, it returns an NSArray containing the same objects. http://stackoverflow.co

objective c, category 和 protocol 中添加property

property的本质是实例变量 + getter 和 setter 方法 category和protocol可以添加方法 category 和 protocol中可以添加@property 关键字 所以,在protocol中添加property时,其实就是添加了 getter 和 setter 方法,在实现这个protocol的类中,我们要自己手动添加实例变量 例: @synthesize name = _name; //此行代码即添加了实例变量及实现了protocol中属性的getter.s

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