oc中的点语法和成员变量作用域
来源:互联网 发布:大数据调查内容 编辑:程序博客网 时间:2024/05/21 17:50
点语法:
声明一个person类:
#import <Foundation/Foundation.h>@interface Person : NSObject{ int _age;//默认为@protected}- (void)setAge:(int)age;- (int)age;@end
person类实现:
#import "Person.h"@implementation Person- (void)setAge:(int)age{ _age = age;// 不能写成self.age = newAge,相当与 [self setAge:newAge];}- (int)age //get方法{ return _age;}@end点语法的使用:
#import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * argv[]){ @autoreleasepool { // insert code here... Person *person = [[Person alloc] init]; //[person setAge:10]; person.age = 10;//点语法,等效与[person setAge:10];//这里并不是给person的属性赋值,而是调用person的setAge方法 //int age = [person age]; int age = person.age;//等效与int age = [person age] NSLog(@"age is %i", age); [person release]; } return 0;}
点语法的作用
OC设计点语法的目的,是为了让其他语言的开发者可以很快的上手OC语言开发,使用点语法,让它和其他面向对象的语言如java很像。
点语法的本质
点语法的本质是方法的调用,而不是访问成员变量,当使用点语法时,编译器会自动展开成相应的方法。切记点语法的本质是转换成相应的set和get方法,如果没有set和get方法,则不能使用点语法。
如:
Stu.age=10;展开为:[stu setAge:10];
int a=stu.age;展开为:[stu age];
编译器如何知道是set方法还是get方法?主要是看赋值(可以使用断点调试来查看)。
在OC中访问成员变量只有一种方式即使用-> 如stu->age,这种情况要求在@public的前提下。
点语法的使用注意
下面的使用方式是一个死循环:
(1)在set方法中,self.age=age;相当于是[self setAge:age];
(2)在get方法中,return self.age;相当于是[self age];
变量作用域:
变量的作用域主要分为四种:
(1)@public (公开的)在有对象的前提下,任何地方都可以直接访问。
(2)@protected (受保护的)只能在当前类和子类的对象方法中访问
(3)@private (私有的)只能在当前类的对象方法中才能直接访问
(4)@package (框架级别的)作用域介于私有和公开之间,只要处于同一个框架中就可以直接通过变量名访问
0 0
- oc中的点语法和成员变量作用域
- OC点语法和成员变量作用域
- OC 点语法 和 成员变量作用域
- 【Objective-C】09-OC中的点语法和成员变量的作用域
- OC点语法和变量作用域
- OC点语法和变量作用域
- OC点语法和变量作用域
- OC点语法和变量作用域
- OC点语法和变量作用域
- 黑马程序员——OC基础语法—点语法和成员变量作用域
- OC基础—点语法、成员变量的作用域
- OC之点语法、成员变量作用域、@property和@synthesize
- OC基础---NSString、多文件开发、点语法、成员变量的作用域、@property和@synthesize
- 黑马程序员——OC基础---核心语法(点语法,成员变量的作用域,@property和@synthesize)
- 18.OC点语法和变量作用域
- OC语言8-点语法和变量作用域
- IOS之OC点语法和变量作用域
- OC语言——点语法和成员变量的4种作用域及property和synthesize的使用
- Sql的decimal、float、double类型的区别
- private ,protect,public实际上的区别
- 【读书笔记】《推荐系统(recommender systems An introduction)》第二章 协同过滤推荐
- 算法
- 杭电ACM题2000遇到的一点问题
- oc中的点语法和成员变量作用域
- POJ 题目3292 Semi-prime H-numbers(打表,数学)
- 深刻理解Linux进程间通信(IPC)
- MyEclipse安装FreeMarker插件(freemarker-ide-0.9.14)
- 关于链表的冒泡排序
- Unity3D学习之(常量、异常、修饰符以及封装)
- 连接不上数据库的解决方案
- Unity3D学习之(枚举类型)
- codevs1163 访问艺术馆(树形dp)