@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)!另外,若这样写@synthesize age; 编译器会自动在.h文件中寻找age,若无,则自动创建一个变量_age。注意,是_age。

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

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

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

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

  1. ios中点语法、property跟synthesize用法

    一:OC中得点语法 1> 点语法的基本使用: ·使用 对象.成员变量   可以实现设置成员变量值,和获取成员变量的值   2> 点语法的本质 (点语法是Xcode编译器自己帮我们完成的一个 ...

  2. OC开发系列-@property和@synthesize

    property和synthesize 创建一个Person类.提供成员属性的_age和_height的setter和getter方法. #import <Foundation/Foundati ...

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

    一.@property关键字需要掌握的知识: 1.用在@interface中,用来自动生成setter和getter的声明 例:@property int age;--相当于执行了右边的代码--> ...

  4. 五.OC基础--1.多态,2.类对象,3.点语法,4.@property&@synthesize,5.动态类型,内省(判断对象是否遵循特定的协议,以及是否可以响应特定的消息)

    五.OC基础--1.多态, 1. 多态概念,定义:多态就是某一类事物的多种形态: 表现形式: Animal *ani = [Dog new]; 多态条件:1.有继承关系 2.有方法的重写 2.多态代码 ...

  5. Objective-C 点语法 成员变量的作用域 @property和@synthesize关键字 id类型

    点语法 1.利用点语法替换set方法和get方法 方法调用 Student *stu = [Student new]; [stu setAge : 18]; int age = [stu age]; ...

  6. OC中两个关键字的作用:@property和@synthesize

    两个关键字的使用:@property和@synthesize 一.@property关键字这个关键字是OC中能够快速的定义一个属性的方式,而且他可以设置一些值,就可以达到一定的效果,比如引用计数的问题 ...

  7. OC学习篇之---@property和@synthesize的使用

    在之前一片文章我们介绍了OC中的内存管理:http://blog.csdn.net/jiangwei0910410003/article/details/41924683,今天我们来介绍两个关键字的使 ...

  8. @property和@synthesize的特性

    基础回顾:get方法和set方法 定义类成员变量时,可以在@interface中定义,也可以在@implementation中定义: 在@interface中声明,成员变量的状态是受保护的,即“@pr ...

  9. OC语法1——OC概述

    Object-C简介: OC,即Object-C,iOS开发的核心语言.它是基于C语言的,在C的基础上做了面向对象的封装,所以OC是面向对象的语言.同时也因此OC是兼容C的,也就是说在iOS开发中,可 ...

随机推荐

  1. UVA 1605 Building for UN

    题意: 有n个国家,要求你设计一栋楼并为这n个国家划分房间,要求国家的房间必须连通,且每两个国家之间必须有一间房间是相邻的 分析: 其实非常简单,完全被样例误导了.只需要设计两层就可以了,每个国家占第 ...

  2. JAVAscript——菜单下拉列表练习(阻止事件冒泡)

    下拉列表框,鼠标点击文本框,出现下拉,鼠标(离开的时候或者点击网页其他位置时)下拉列表消失.鼠标放到下拉列表的某一项上变背景色,点击下拉列表的某一项将该项的值显示在文本框内,然后下拉列表消失. < ...

  3. Android设置输入框和软键盘动态悬浮

    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=&q ...

  4. oracle中set define off

    set define off关闭替代变量功能 在SQL*Plus中默认的"&"表示替代变量,也就是说,只要在命令中出现该符号,SQL*Plus就会要你输入替代值.这就意味着 ...

  5. [Linked List]Remove Duplicates from Sorted List

    Total Accepted: 90247 Total Submissions: 254602 Difficulty: Easy Given a sorted linked list, delete ...

  6. 安装Boost

    @echo off set BOOST_ROOT=C:\boost_1_59_0 pushd %BOOST_ROOT% cd tools\build call bootstrap.bat gcc b2 ...

  7. Bootstrap之Button.js

    查看Button.js的源代码 +function ($) { 'use strict'; // BUTTON PUBLIC CLASS DEFINITION // ================= ...

  8. css reset 以及哪些元素有默认margin padding值

    很多网站在css reset 的时候有如下做法: body, ul, ol, li, p, h1, h2, h3, h4, h5, h6, form, label, dl, dt, dd,fields ...

  9. debian install & configure(2)-drivers-nvidia

    ==========================================手动编译卸载受限驱动 :apt-get --purge remove nvidia-*apt-get --purge ...

  10. jenkins中Deploy to container Plugin插件发布配置

    参数详解: 第一项(WAR/EAR files):是war包的相对路径(相对于工作区路径,即在工作区中war包的相对路径.)如我的maven执行完成之后会在工作区的target目录下生成项目.war, ...