OC基础—点语法、成员变量的作用域
来源:互联网 发布:域名备案成功 编辑:程序博客网 时间:2024/05/01 11:12
------ android培训、java培训、期待与您交流! ----------
点语法
点语法:OC设计点语法的目的(让其他语言学习者快速转入OC)
首先建一个Person类,下面是.h文件
#import <Foundation/Foundation.h>@interface Person : NSObject{ int _age;}- (void)setAge:(int)age;- (int)age;@end.m文件中是set,get方法的实现
看一下main函数
#import <Foundation/Foundation.h>#import "Person.h"int main( ){ Person *p = [Person new]; // 点语法的本质是方法的调用 //[p setAge:10]; // .语法 这是赋值 当编译时就会转成上面那行 p.age = 10; //[p age] //.语法 这里是取值 int a = p.age; return 0;}这里p.age = 10;这就是点语法,看到这个学java的就非常熟悉了,但是不一样这里的.age不是调用成员变量而是调用方法(点语法的本质:方法的调用)(OC中访问成员变量时p->age)。p.age = 10;看到这句是编译器会翻译成[p setAge:10];,看到这句时int a = p.age;,编译器会翻译为[p age];。
没有set,get方法就没法使用点语法!
死循环注意:
- (void)setAge:(int)age{ self.age = age; // 会导致死循环}- (int)age{ return self.age; // 会导致死循环}self.age = age------->setAge:age,一执行这段代码就会调用setAge方法之后在执行,再转入,在执行………………死循环。
同样return self.age;同样会导致死循环。
成员变量的作用域
成员变量的作用域:(@public,@protected,@private,@package)
1. @public 在任何地方都可以访问这些变量
2. @private 只能在当前类的对象方法中使用 implementation中默认就是private
3. @protected 能在当前类和子类的对象方法中直接访问 --->默认 interface中默认就是protected
!!!什么都不写默认是protected
4. @package :只要处于同一个框架中 就可以通过变量名直接访问对象的成员变量 他的作用域是出于public与private之间
建立一个Person类,下面是.h文件
#import <Foundation/Foundation.h>@interface Person : NSObject{ @public //在任何地方都可以访问这些变量 int _age; @private // 只能在当前类的对象方法中使用 int _height; @protected // 能在当前类和子类的对象方法中直接访问 int _weight; int _money; // 这也是protected}- (void)setHeight:(int)height;- (int)height;@end
在.m文件将.h的方法声明
int main( ){ Person *p = [Person new]; p->_age = 100; // 这样可以随便访问 // p->_height; // 这样写是错误的,因为_height是@private类型的(只能在当前类的对象方法也就是Person类的对象方法中使用,哪怕是Person的子类也是不可以的) // p->_weight; // 这样在这里写也是不对的,_weight是@protected(只能在当前类和子类的对象方法中使用,在子类的对象方法中是可以这样调用的) return 0;}还有一点需要注意,在@implementation中定义的变量默认类型是@private
#import "Person.h"@implementation Person- (void)test{ // 这里的变量与main无法直接调用 哪怕是@public类型的 因为main函数连不到这里来 //main函数连接的只是.h文件 连不到.m文件 _age = 10; // @private}@end
------ android培训、java培训、期待与您交流! ----------
0 0
- OC基础—点语法、成员变量的作用域
- 黑马程序员——OC基础语法—点语法和成员变量作用域
- 黑马程序员——OC基础---核心语法(点语法,成员变量的作用域,@property和@synthesize)
- OC基础---NSString、多文件开发、点语法、成员变量的作用域、@property和@synthesize
- OC——多态、NSString的基本使用、点语法、成员变量作用域
- 黑马程序员——【OC】点语法以及成员变量的作用域
- Objective-C基础——核心语法-点语法法和成员变量的作用域
- 黑马程序员------OC基础-----点语法、id、构造方法、Category、成员变量作用域
- OC点语法和成员变量作用域
- oc中的点语法和成员变量作用域
- OC 点语法 和 成员变量作用域
- 黑马视频学习笔记-OC-点语法、成员变量的作用域
- 【Objective-C】09-OC中的点语法和成员变量的作用域
- OC语言——点语法和成员变量的4种作用域及property和synthesize的使用
- 黑马程序员——OC语言------NSString、多文件开发、点语法、成员变量的作用域、@property和@synthesize
- OC特有语法1—点语法,成员变量作用域,@property,id,构造方法,多文件编程
- OC特有语法1—点语法,成员变量作用域,@property,id,构造方法,多文件编程
- OC点语法和变量作用域
- Python错误集锦
- 预处理
- WCF HOST多个服务遇到的问题
- 矩阵乘优化的思考
- stdio.h c头文件
- OC基础—点语法、成员变量的作用域
- SQL语句技巧,不敢独享,特此呈上
- 养生系列 之 百合莲子豆浆的做法
- ubuntu14.04 64位安装longeneQQ遇到的问题
- 开发在ios平台开发游戏了
- ubuntu 12.04 解压安装jdk
- hdu 2429 Word Game(矩阵)
- 新手初练:用ASP做一个域名查询系统
- ASP.NET编程中的十大技巧