OC语言——点语法和成员变量的4种作用域及property和synthesize的使用
2015-04-01 21:25
323 查看
点语法:点语法的本质还是方法调用
在使用点语法中,可以使用断点进行测试,确保输出无误。
二.成员变量的四种作用域
1.@public // 在任何地方都可以访问成员变量
2.@private // 只能在当前类的对象方法中直接使用(私有)
3.@protected // 能在当前类和子类的对象中访问,默认情况在.h文件下什么都不写就是@protected
4.@package // 同一个体系“框架”可以访问,介于@private和@public之间,一般很少用到,暂不描述
成员变量的注意点:
默认情况下在声明(@interface)中的变量默认是@protected,在实现(@implementation)中默认是@private
原因是:.m文件一般不能被包含,所以它是私有的。
[b]@interface和[b]@implementation不能声明同名的变量[/b]
[/b]
三. 两个关键字@property和@synthesize
[b]@property作用:帮助我们自动生成setter 和getter的声明[/b]
@synthesize作用:[b]帮助我们自动生成setter 和getter的实现[/b]
[b][/b]
也可以多个声明
[b][/b]
多个实现
注:在没有写成员变量的情况下,@synthesize会自动生成所需要成员变量。
例如:
注:如果在实现中@implementation
@synthesize age; // 它会访问跟名字一模一样的age
在最新的xcode中,已经不需要写@synthesize,@property已经独揽所有的任务,可以自动生成setter和getter的声明与实现
Person *p = [Person new]; // 点语法的本质还是方法调用 p.age = 10; // [p setAge:10]一.点语法注意点:
@implementation Person
//setter方法中的死循环 -(void)setAge:(int)age { // 会引发死循环,不停的调用setter方法[self setAge:age] self.age = age; }
- (int)age {
// 下面也会引发死循环,调用getter方法[self age]
return self.age; // 应该这样输出:return _age; 或者 return self->_age; }
在使用点语法中,可以使用断点进行测试,确保输出无误。
二.成员变量的四种作用域
1.@public // 在任何地方都可以访问成员变量
@interface Person : NSObject { @public int _age; int _height; }
2.@private // 只能在当前类的对象方法中直接使用(私有)
@interface Person : NSObject { @private
int _age;// 默认就是私有 }
3.@protected // 能在当前类和子类的对象中访问,默认情况在.h文件下什么都不写就是@protected
@interface Person : NSObject { //什么都不写,默认就是@protected int _age; int _height; }
4.@package // 同一个体系“框架”可以访问,介于@private和@public之间,一般很少用到,暂不描述
成员变量的注意点:
默认情况下在声明(@interface)中的变量默认是@protected,在实现(@implementation)中默认是@private
原因是:.m文件一般不能被包含,所以它是私有的。
[b]@interface和[b]@implementation不能声明同名的变量[/b]
[/b]
三. 两个关键字@property和@synthesize
[b]@property作用:帮助我们自动生成setter 和getter的声明[/b]
@interface Person : NSObject</span></span>
@property int age; // 自动生成setter声明,和getter声明</span></span>
// -(void)setAge:(int)age;
// -(int)age;
</pre><pre name="code" class="objc">@end
@synthesize作用:[b]帮助我们自动生成setter 和getter的实现[/b]
@implementation Person //会自动生成age的setter和getter实现,并且会访问_age这个成员变量 @synthesize age = _age; @end
[b][/b]
也可以多个声明
@interface Person : NSObject</span>
//生成age和weight属性的声明 @property age = _age, weight = _weight; @end
[b][/b]
多个实现
@implementation Person //生成age和weight属性的实现
@synthesize age = _age, weight = _weight;
@end
注:在没有写成员变量的情况下,@synthesize会自动生成所需要成员变量。
例如:
@implementation Person //会访问_age这个成员变量,如果不存在,就会自动生成@private类型的_age变量 @synthesize age = _age; @end
注:如果在实现中@implementation
@synthesize age; // 它会访问跟名字一模一样的age
在最新的xcode中,已经不需要写@synthesize,@property已经独揽所有的任务,可以自动生成setter和getter的声明与实现
相关文章推荐
- OC的特有语法-分类Category、 类的本质、description方法、SEL、NSLog输出增强、点语法、变量作用域、@property @synthesize关键字、Id、OC语言构造方法
- OC核心语法——点语法、作用域、property和synthesize
- OC核心语法(1)点语法、变量作用域、@property@synthesize和id
- OC语言学习 (三) 成员变量get/set方法和“.”语法,@proterty和@synthesize关键字
- OC——多态、NSString的基本使用、点语法、成员变量作用域
- oc中成员变量的set/get方法 以及 属性点语法的使用
- OC_语法入门_day3_点语法/成员访问修饰符/property/synthesize
- OC @property ,@synthesize和点语法的使用
- 黑马程序员——OC语言学习——Xcode开发初始化、点语法、成员变量作用域、关键字@property和@synthesize
- 黑马程序员——OC语言------NSString、多文件开发、点语法、成员变量的作用域、@property和@synthesize
- OC语言学习 (三) 成员变量get/set方法和“.”语法,@proterty和@synthesize关键字
- 【Objective-C】09-OC中的点语法和成员变量的作用域
- OC语言@property @synthesize和id
- OC语言@property @synthesize和id
- 「OC」点语法和成员变量的作用域
- OC中的点语法,成员变量的作用域
- OC语言@property @synthesize和id
- ObjectC语言基础4—ARC、成员变量、构造方法、property
- 黑马程序员—OC点语法和成员变量作用域
- OC语言--成员变量作用域