/**

 注意:由@property声明的属性 在类方法中通过下划线是获取不到的 必须是通过 对象名.属性 才能获取到!~
@property和@synthesize关键字是针对成员变量以及get/set方法而言的 从Xcode4.4以后@property已经独揽了@synthesize的功能主要有三个作用: (1)生成了成员变量get/set方法的声明
(2)生成了私有的带下划线的的成员变量因此子类不可以直接访问,但是可以通过get/set方法访问。那么如果想让定义的成员变量让子类直接访问那么只能在.h文件中定义成员    变量了,因为它默认是@protected
(3)生成了get/set方法的实现 注意:
如果已经手动实现了get和set方法的话Xcode不会再自动生成带有下划线的私有成员变量了
因为xCode自动生成成员变量的目的就是为了根据成员变量而生成get/set方法的
但是如果get和set方法缺一个的话都会生成带下划线的变量 在Xcode4.4版本之前@property和@synthesize的功能是独立分工的:
@property的作用是:自动的生成成员变量set/get方法的声明如代码:
@property int age; 它的作用和下面两行代码的作用一致
- (void)setAge:(int)age;
- (int)age;
注意:属性名称不要加前缀_ 否则生成的get/set方法中也会有下划线 @synthesize的作用是实现@property定义的方法代码如:
@synthesize age
将@property中定义的属性自动生成get/set的实现方法而且默认访问成员变量age 如果指定访问成员变量_age的话代码如:
@synthesize age = _age;意思是:
把@property中声明的age成员变量生成get/set实现方法,并且在实现方法内部
访问_age这个成员变量,也就意味着给成员 _age 赋值 注意:访问成员变量 _age 如果在.h文件中没有定义_age成员变量的话,就会在.m文件中自动生成@private类型的成员变量_age
*/ #import <Foundation/Foundation.h> @interface Person : NSObject
{
int _age; } @property int age; // 成员变量 _age get/set方法的声明 (xCode 4.4之前) //- (void)setAge:(int)age;
//- (int)age; // 验证方法
- (void)test;
- (void)setWeight:(int)weight;
- (int)weight; @property int _age; // 属性中带有下划线 _ 那么生成的get/set也会有下划线 _
//- (void)set_age:(int)_age;
//- (int)_age; @property NSString *name;
@end /********************Person.m文件***********************************/
#import "Person.h"
@implementation Person @synthesize age = _age; /*
@synthesize age = _age; 和下面的代码效果一致
- (void)setAge:(int)age
{
_age = age;
} - (int)age
{
return _age;
}
*/ // 在.h文件中没有声明成员变量_age 但是@synthesize age = _age 自动生成了私有的成员变量 _age
- (void)test
{
NSLog(@"%d",_age);
}
@end

iOS 详细解释@property和@synthesize关键字的更多相关文章

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

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

  2. Objective-C 【@property和@synthesize关键字】

    ------------------------------------------- @property关键字的使用及注意事项 直接上代码和注释了! // //@property关键字的使用 //① ...

  3. iOS中属性Property的常用关键字的使用说明

    属性关键字的作用 现在我们iOS开发中,基本都是使用ARC(自动引用计数)技术,来编写我们的代码.因此在属性property中我们经常使用的关键字有strong,weak,assign,copy,no ...

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

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

  5. [转]iOS开发中@property的属性weak nonatomic strong readonly等介绍

    转载地址: http://www.lvtao.net/ios/504.html @property与@synthesize是成对出现的,可以自动生成某个类成员变量的存取方法.在Xcode4.5以及以后 ...

  6. Objective-C--@property,@synthesize关键字介绍

    Objective-C–@property,@synthesize关键字介绍 转载:http://www.cnblogs.com/QM80/p/3576282.html /** 注意:由@proper ...

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

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

  8. iOS 内存管理-copy、 retain、 assign 、readonly 、 readwrite、nonatomic、@property、@synthesize、@dynamic、IB_DESIGNABLE 、 IBInspectable、IBOutletCollection

    浅谈iOS内存管理机制 alloc,retain,copy,release,autorelease 1)使用@property配合@synthesize可以让编译器自动实现getter/setter方 ...

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

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

随机推荐

  1. 将SCOM2007代理升级到 System Center 2012 SP1

    使用以下过程可以升级到 System Center 2012 Service Pack 1 (SP1), Operations Manager工程师.您应首先验证代理程序满足最小受支持的配置.有关详细 ...

  2. MYSQL BLOB 字段大小以及个数的限制測试。

    測试结论 mysql版本号 5.1     表类型: innodb, row_format=compact (这是默认的行格式)     插入超过10个blob, blob的数据量非常小(<76 ...

  3. 【35】考虑virtual方法以外的其他选择

    1.使用Non-Virtual Interface 实现方法模版 将虚方法声明为private,子类重写private的虚方法,在父类中通过public方法调用虚方法.NVI的优点是:可以在虚方法之前 ...

  4. mha日常维护命令

    mha日常维护命令 http://m.blog.chinaunix.net/uid-28437434-id-3959021.html?/13033.shtml 1.查看ssh登陆是否成功masterh ...

  5. forward_list例子

    9.28 编写函数,接受一个forward_list<string>和两个string共三个参数.函数应在链表中查找第一个string,并将第二个string插入到紧接着第一个string ...

  6. JS与OC交互--简单使用

    直接上代码 .m文件 #import "ViewController.h" @interface ViewController () <UIWebViewDelegate&g ...

  7. 马上学Android开发在线视频教程全集

    马上学Android开发视频教程全集 马上学Android开发[马上学Android]安卓开发视频教程 001 Androi 马上学Android开发[马上学Android]安卓开发视频教程 002 ...

  8. Nim游戏(组合游戏Combinatorial Games)

    http://baike.baidu.com/view/1101962.htm?fr=aladdin Nim游戏是博弈论中最经典的模型(之一),它又有着十分简单的规则和无比优美的结论 Nim游戏是组合 ...

  9. 一致性Hash算法及使用场景

    一.问题产生背景      在使用分布式对数据进行存储时,经常会碰到需要新增节点来满足业务快速增长的需求.然而在新增节点时,如果处理不善会导致所有的数据重新分片,这对于某些系统来说可能是灾难性的. 那 ...

  10. Leetcode 104. Maximum Depth of Binary Tree(二叉树的最大深度)

    Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...