Objective-C的成员变量、属性与带下划线属性的总结
2015-12-09 16:54
585 查看
成员变量与属性是不同的,先看如下示例代码:
其中,定义成员变量格式(放在大括号中)为:
或者:
而属性则使用
Xcode推荐的书写成员变量的形式是在变量名前添加下划线
对于属性,使用
可以这样说,一个属性对应着一个成员变量;如果属性只使用
在类的内部该如何访问成员变量和属性呢?
如果,成员变量可以直接通过变量名访问,或者
User.h文件
#import <Foundation/Foundation.h> @interface User : NSObject{ // 成员变量 NSString *name; NSInteger age;//typedef long NSInteger; } // 属性 @property(nonatomic,copy)NSString* address; @property(nonatomic,assign)CGFloat height; - (void)obtainInfo; @end
User.m文件
#import "User.h" @implementation User{ NSString *info; } @synthesize address = _address; //@synthesize height; - (void)obtainInfo{ NSLog(@"name = %@",self->name); NSLog(@"age = %ld",(long)age); NSLog(@"address = %@",self.address); NSLog(@"height = %f",self.height); NSLog(@"info = %@",info); } @end
其中,定义成员变量格式(放在大括号中)为:
@interface User:Object{ .... }
或者:
@impletation User{ ... }
而属性则使用
@property(和@synthesize)定义的。
Xcode推荐的书写成员变量的形式是在变量名前添加下划线
_,例如:
_name。成员变量只能通过
->符号来访问。
对于属性,使用
@property定义后,系统会自动生成
setter和
getter方法。
可以这样说,一个属性对应着一个成员变量;如果属性只使用
@property声明,而没使用
@synthesize的话,系统会自动的给你声明一个
_开头的实例变量。如果又使用
@synthesize的话,则相当于声明了一个实例变量,如果
@synthesize address = _address;,变量名为
_address;如果
@synthesize address ;,变量名为
address。
在类的内部该如何访问成员变量和属性呢?
如果,成员变量可以直接通过变量名访问,或者
self->...来访问;对于属性,如果没有定义
@property,则必须要用
self.属性名来访问。本质上,属性和成员变量处于一致的状态。
相关文章推荐
- iOS---中objective-c与js的交互
- iOS--- js与objective-c的交互(转)
- 【摘录】在Windows平台上使用Objective-C
- Objective-c 官方文档翻译Block
- 浅谈SuperMap iObjects制作热力图
- Objective-C之谓词NSPredicate
- 解决NDK编译问题member at n is not an ELF object
- Objective-C语法之代码块(block)的使用
- object-C语言特性(一)
- XCode、Cocoa、Objective-C 的关系区别 (2011-10-23 11:39:03)
- Objective-C-语法积累
- 夺命雷公狗---javascript NO:29 Object类
- JsonParseException: Unexpected character ('?' (code 239)): was expecting comma to separate OBJECT en
- hibernate如何返回一个Map对象 以及List<Map<String, Object>>
- 类的继承--学习笔记
- libz.so.1: cannot open shared object file
- 【Objective-C学习记录】第七天
- [Objective-C] - NSObject
- 用反射,将DataRow行转为Object对象
- Objective-C的block内存管理