黑马程序员---点语法和成员变量的作用域
2014-10-24 09:33
274 查看
———Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ———
点语法的本质还是方法调用
如: stu.age =10; 就相当于对象stu掉用了setAge方法,[stu setAge:10];
int a = stu.age; 获取age的值并赋值给变量a,就相当于对象stu调用了age的get方法: int
a = [stu age];
当使用点语法的时候,编译器会自动展开成相应的方法:如下图所示:
如何看点语法是set还是get方法?如果是把点语法赋值给其他变量的的话那就是get方法,如果是给点语法赋值那就是set方法
简单点来说,给点语法赋值就是set方法,通过点语法返回值就是get方法。
验证:
在setName方法中返回"rose", 此时打印出的s是rose,并不是JACK,如果p.name是访问成员变量的话,那么打印应该是JACK,所以充分说明了点语法是方法调用,并不是访问成员变量。
注意:会引发死循环的写法
同样,在get方法中,使用self也会引发死循环
成员变量的作用域分为四种:
@public : 在任何地方都能直接访问对象的成员变量
@private : 只能在当前类的对象方法中直接访问
@protected : 可以在当前类及其子类的对象方法中直接访问(默认就是@protected)
@package : 只要处在同一个框架中,就能直接访问对象的成员变量
注意:1.在@implementation中也可以声明成员变量,默认就是private的,就算是写了public也是没有用的。
2.@interface中声明的成员变量默认是protected的
3.@interface和@implementation不能声明同名的成员变量
点语法的本质还是方法调用
如: stu.age =10; 就相当于对象stu掉用了setAge方法,[stu setAge:10];
int a = stu.age; 获取age的值并赋值给变量a,就相当于对象stu调用了age的get方法: int
a = [stu age];
当使用点语法的时候,编译器会自动展开成相应的方法:如下图所示:
如何看点语法是set还是get方法?如果是把点语法赋值给其他变量的的话那就是get方法,如果是给点语法赋值那就是set方法
简单点来说,给点语法赋值就是set方法,通过点语法返回值就是get方法。
验证:
p.name = @"JACK"; NSString *s = p.name; // 在setName方法中返回"rose" NSLog(@"%@",s); // 此时打印出的s是rose,并不是JACK
在setName方法中返回"rose", 此时打印出的s是rose,并不是JACK,如果p.name是访问成员变量的话,那么打印应该是JACK,所以充分说明了点语法是方法调用,并不是访问成员变量。
注意:会引发死循环的写法
- (void)setAge:(int)age { _age=age; NSLog(@"setAge方法"); // 会发生死循环 // self.age = age; // [self setAge:age]; }
同样,在get方法中,使用self也会引发死循环
- (int)age { NSLog(@"age方法"); return _age; // 或者是 self->_age; // 也会引发死循环 // return self.age; }成员变量的作用域
成员变量的作用域分为四种:
@public : 在任何地方都能直接访问对象的成员变量
@private : 只能在当前类的对象方法中直接访问
@protected : 可以在当前类及其子类的对象方法中直接访问(默认就是@protected)
@package : 只要处在同一个框架中,就能直接访问对象的成员变量
注意:1.在@implementation中也可以声明成员变量,默认就是private的,就算是写了public也是没有用的。
2.@interface中声明的成员变量默认是protected的
3.@interface和@implementation不能声明同名的成员变量
相关文章推荐
- 黑马程序员--set get点语法 和 成员变量的作用域
- 黑马程序员——OC语言学习——Xcode开发初始化、点语法、成员变量作用域、关键字@property和@synthesize
- 黑马程序员——OC语言------NSString、多文件开发、点语法、成员变量的作用域、@property和@synthesize
- 黑马程序员——【OC】点语法以及成员变量的作用域
- 黑马程序员_object c学习日记①_类的声明定义、点语法及成员变量作用域
- 黑马程序员——OC基础语法—点语法和成员变量作用域
- 黑马程序员——OC基础---核心语法(点语法,成员变量的作用域,@property和@synthesize)
- 黑马程序员-- 核心语法 Property synthesize 成员变量的作用域
- 黑马程序员_iOS开发之OC之面向对象之多文件操作、点语法、成员变量的作用域和关键字@property与@synthesize
- 黑马程序员------OC基础-----点语法、id、构造方法、Category、成员变量作用域
- 黑马程序员—OC点语法和成员变量作用域
- OC——多态、NSString的基本使用、点语法、成员变量作用域
- 9、黑马程序员-OC点语法和变量的作用域
- OC核心语法之NSString、点语法、成员变量作用域、@property和@synthesize
- OC_NSString,点语法,成员变量作用域,@property和@synthesize,id笔记
- objective-c中点语法和成员变量作用域
- 黑马程序员---Objective-C基础学习---点方法使用和成员变量的作用域
- 【Objective-C】09-OC中的点语法和成员变量的作用域
- 「OC」点语法和成员变量的作用域
- OC 点语法 和 成员变量作用域