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 age = _age;  中如果没有指定成员变量名,实现中默认访问的就是同名的成员变量

例: @synthesize age;//默认访问的就是age成员变量,而不是_age成员变量

如果age这个成员变量不存在,程序会在@implementation中自动生成一个私有的age变量

同理,如果指定的成员变量也不存在,程序也会在@implementation中自动生成一个私有的跟指定变量同名的成员变量

三、Xcode版本注意事项:

1.Xcode 4.4前:关键字@property 只是自动生成set方法和get方法的声明

2.Xcode 4.4后:关键字@property 将会自动生成set方法和get方法的声明和实现、增加一个_开头的成员变量

四、代码实例:

#import <Foundation/Foundation.h>

@interface Car : NSObject
{
    int _wheels;
    //int _speed;
}
@property int wheels;
@property int speed;
@end

@implementation Car
// 默认会访问wheels成员变量,如果这个成员变量不存在,自动生成一个私有的wheels变量
@synthesize wheels;

// setter和getter会访问_speed成员变量,如果这个成员变量不存在,自动生成一个私有的_speed变量
@synthesize speed = _speed;

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

@end

int main()
{
    Car *c = [[Car alloc] init];

    c.wheels = 4;
    c.speed = 250;

    NSLog(@"%@", c);
    //NSLog(@"轮子个数:%d", c.wheels);

    return 0;
}

  

时间: 2024-09-30 06:55:03

OC基础--关键字@property 和 @synthesize的相关文章

OC基础之-Property(属性)和点语法

学习属性之前回忆一下之前学到的setter方法和getter方法: (1)setter方法的作用:用来为单一的实例变量赋值(只能是一个实例变量,多了的叫做get方法) (2)setter方法的写法标准: - 号方法,  无返回值,   名字以set开头+要设置的变量的实例变量名(首字母需大写):(setter方法有且只有一个参数)+参数的类型(和实例变量的类型相同)+参数名(和实例变量名相同) (3)getter方法的作用:用来获取单一实例变量的值. (4)getter方法的写法标准: - 号方

OC语法5——@property和@synthesize

@property和@synthesize: 我们回想一下: 在OC中我们定义一个Student类需要两个文件Student.h 和 Student.m. Student.h(声明文件):定义成员变量,并且为了使外界可以访问操作这些成员变量,需要定义set和get方法提供给外界.最后还要定义自定义的功能方法. Student.m(实现文件):实现文件实现set和get方法,并且实现自定义的功能方法. 假如,Student类中有很多个成员变量,那我们若手动定义成员变量,再一个一个声明它们的set和

黑马程序员---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基础教程 》笔记】(七)OC的关键字用意小结

1.  #import #import <> 从system目录中查找头文件,不会检查当前目录. #import "" 首先在当前目录中查找,如果未找到,则在Xcode设置的预处理程序搜索路径中查找文件. #import 指令可以防止头文件被重复包含 2. typedef 用于给一个类型定义新名称 或 简化较为复杂的类型声明. 3. #define 用于宏定义预处理. 4. 定义类 *.h 用于定义类的头文件 @interface 类 : 父类 @end *.m Objec

Objective-C基础笔记(2)@property和@synthesize

先贴出使用@property和@synthesize实现的上一篇中的代码,再解释这两个关键字的用法和含义,代码如下: Person.h文件 #import <Foundation/Foundation.h> @interface Person : NSObject { int _age; //可以被子类访问 //这里系统会帮我们生成一个默认的 int _no 私有变量(不能被子类访问) } @property int age; @property int no; //自己写一个构造方法 - (

OC中点语法、property跟synthesize用法

一:OC中得点语法 1> 点语法的基本使用: ·使用 对象.成员变量   可以实现设置成员变量值,和获取成员变量的值 2> 点语法的本质 (点语法是Xcode编译器自己帮我们完成的一个功能) 实际上点语法就是set和get方法,当编译遇到点语法时,编译器就会将点语法转成set和get方法. 注意:也就是说,如果类中没有实现set和get方法,那么就不会有点语法 p.name = @“”; 实际上就是 [p setName:@“”]; 在OC中访问成员变量只有一种方式即使用-> 如stu-

黑马程序员------OC之点语法、成员变量作用域、@property和@synthesize

-----iOS培训.Android培训.Java培训,期待与您交流----- OC之点语法.成员变量作用域.@property和@synthesize 一.点语法 1)点语法基本概念:当我们使用面向对象的封装特性后,将成员变量私有化,采取使用setter方法和getter方法向外面提供成员变量访问方案.那么我们知道,OC的调用方法的方式是很独特的,采用的是 [对象名(类名)  方法名]  的方式 ,那么很多Java.C#程序员就不习惯了,在Java.C#这些主流的面向对象语言中,调用方法的方式

OC基础--Property

编译器指令: 用来告诉编译器要做什么 @property: @property是编译器的指令 告诉编译器在@interface中自动生成setter和getter的声明 @synthesize: @synthesize是编译器的指令 告诉编译器在@implementation中自动生成setter和getter的实现 手动写setter-getter: #import <Foundation/Foundation.h>@interface Member : NSObject { @public

OC的@property和@synthesize

1. 成员变量和属性的区别. @interface User : NSObject { int _height; // 成员变量,不会自动生成setter 和getter方法. } @property (strong, nonatomic) NSString *uid; // 属性. 会自动生成setter和getter方法. @property (assign, nonatomic) int age; 2. @property 和 @synthesize   声明一个setter getter