OC语法5——@property和@synthesize

@property和@synthesize:

  我们回想一下:

  在OC中我们定义一个Student类需要两个文件Student.h 和 Student.m。

  Student.h(声明文件):定义成员变量,并且为了使外界可以访问操作这些成员变量,需要定义set和get方法提供给外界。最后还要定义自定义的功能方法。

  Student.m(实现文件):实现文件实现set和get方法,并且实现自定义的功能方法。

  假如,Student类中有很多个成员变量,那我们若手动定义成员变量,再一个一个声明它们的set和get方法,并且一个一个的在Student.m文件中实现set和get方法,这样无疑是无聊而低效的。

  为了提高开发效率,XCode为了提供了便捷:

  OC中引入了@property关键字。

@property  char *  _name;
@property  int  _age;

在Student.h文件中这样写,XCode编译器会自动生成set和get的方法声明。

注意:千万要注意,@property int _age; 替换的只是set和get方法,所以在花括号里还是要照常定义成员变量,而只在声明set和get方法的地方用@property取代。

而在Student.m文件中,用@synthesize可以自动生成set和get方法的实现,从而取代手写代码。

需要说明的是,@synthesize _age; 会自动在Student.h文件中寻找名为_age的成员变量。若有,则实现set和get方法;若无,则在Student.m文件中自己创建个_age成员变量,但该_age是私有的(private)!

另外需要说明的是:在XCode 4.5以上版本中,只要编译器检测到了Student.h文件中的@property int _age;不仅会自动在Student.h文件中声明set和get方法,还会自动在Student.m文件中实现set和get方法。

所以,只需开发者在Student.h中写@property int _age; 不仅把不用手写set,get方法的声明和实现了,甚至连@synthesize也不用写了!

在以后的开发中我们就这样写,很方便。但我们也要清楚它最本质的代码写法。

时间: 2024-10-07 02:39:21

OC语法5——@property和@synthesize的相关文章

OC中点语法、property跟synthesize用法

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

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

oc-点语法,@property,@synthesize,id-编译器特性

有赋值就是set方法,没有 就是get方法 @synthesize 只会去访问 _age 这个成员变量

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

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

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

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

黑马程序员---OC---点语法、属性作用域、@property与@synthesize、id、构造方法、分类

------iOS培训.Java培训.Android培训, iOS学习型技术博客,期待与您交流------                                    点语法 点语法的本质是方法调用:调用对象成员变量的setter和getter 是编译器特性,编译器帮忙转的 p.age = 25;       // 等价于 [p setAge:25]; int a = p.age;     // 等价于 int a = [p age]; // 访问成员变量不能用点语法,而是 p->_a

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

OC语法1——OC概述

Object-C简介: OC,即Object-C,iOS开发的核心语言.它是基于C语言的,在C的基础上做了面向对象的封装,所以OC是面向对象的语言.同时也因此OC是兼容C的,也就是说在iOS开发中,可以混入C代码,甚至C++代码. 语法特点: 1.没有包名的概念: 在Java中,为了防止2个类名相同的类冲突,你可以将2个类放在不同的包里.OC中没有“包”的概念,也就是说没有命名空间机制.取而代之的是“前缀”,可以在类前面加上前缀.这样即使2个类名相同,但只要前缀不同,便可以将它们区分. 2.关键

(转载)OC语法总结

1.定义类:@interface 类名 : 父类@end 2.使用:(冒号)表示继承一个类Student : NSObject 3.使用()定义一个Catagory(类别) * 作用:在不改变原有类结构的基础上,扩展原有类的方法(不能扩展属性),但不建议重载原有类的方法 * 开发工具默认生成的文件为:类名+Catagory名称 * Catagory可以写在单独的文件中,也可以写在原有类的文件中,如何写根据需求来决定. 4.使用<>表示实现一个Protocol(协议),如需实现多个协议,将协议名