黑马程序员-OC-点语法
来源:互联网 发布:java获取当年的第一天 编辑:程序博客网 时间:2024/05/02 00:49
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
在一些其它语言中,我们可以使用“对象名.成员变量名”来访问一些公共的成员变量,这样格式的方法,我们就叫做点语法。
在OC语言中,为了让其它行业的程序员可以快速学习,也引入了点语法。
通常的set和get方法:
这种方式是代码的原始写法。
Person.h
#import <Foundation/Foundation.h> @interface Person : NSObject { int _age; } - (void)setAge:(int)newAge; - (int)age; @end
定义了一个成员变量_age,其权限是默认的@protected,所以外界不能直接访问它
从而声明了set和get方法。
Person.m
>#import "Person.h"@implementation Person - (void)setAge:(int)newAge { _age = newAge; } - (int)age { return _age; } @end
以上方法是对set和get的实现
main.m
#import "Person.h" int main(){ Student *stu = [[Student alloc] init]; // 设置age的值 [stu setAge:10]; // 取出age的值 int age = [stu age]; NSLog(@"age is %i", age); [stu release]; } return 0;}
以上就是OC的本质方法,来实现set和get方法的调用。但是使用[]的方法,对于其他程序员来说是比较难接受的,所以OC就又引入了点语法。
使用点语法来代替set方法和get方法
int main() { @autoreleasepool { Person *stu = [[Person alloc] init]; // 设置age的值 stu.age = 10; // 等价于[stu setAge:10]; // 取出age的值 int age = sut.age; // 等价于int age = [stu age]; NSLog(@"age is %i", age); [stu release]; } return 0; }
以上代码是用点语法代替了传统的语法,即用stu.age=10代替原来的[stu setAge:10] ,再OC中他们是可以相互替换的。
但是stu.age=10不代表可以直接访问age,它只是一个转化,stu.age=10还是会转化为[stu.setage:10]。
值得注意stu.age=10不能直接访问对象,他们还是@protected格式,不和stu->age一样。
使用stu.age是来替换[stu age]的,这两种写法也是可以相互替换的。
stu.age也不能直接访问对象的成员变量,而是将int age = stu.age自动展开成int age = [stu age]
虽然set和get方法的点语法很相似,但程序员也可以根据自己是取值还是输入值来区别。
如果想快速区分,也可以用以下代码
#import "Person.h"@implementation Person - (void)setAge:(int)newAge { printf("这个是set方法"); _age = newAge; } - (int)age { printf("这个是get方法"); return _age; } @end
在set和get方法的实现里面加上一些打印功能可以让我们更直观区别。
在我们使用点语法时,要注意:
#import "Person.h"@implementation Person- (void)setAge:(int)age{ //_age = age; NSLog(@"setAge:"); // 会引发死循环 self.age = age; // [self setAge:age];}- (int)age{ NSLog(@"age"); return _age; // 会引发死循环 return self.age;// [self age];}@end
要注意在使用self时会使代码出现死循环。
这样会使程序发生闪退,即程序奔溃。
- [黑马程序员][OC]点语法
- 黑马程序员-OC-点语法
- 黑马程序员--OC-点语法
- 黑马程序员-------OC----点语法
- 黑马程序员 oc随机 点语法
- 黑马程序员 -- OC语言 NSString使用 点语法 构造 分类
- 黑马程序员---【OC语言】05点语法与作用域
- 黑马程序员--IOS学习笔记(OC-点语法)
- 黑马程序员——OC语言——点语法
- 黑马程序员-OC学习日记三之点语法小结
- 黑马程序员IOS-OC语言-点语法、@property
- 黑马程序员---iOS基础----OC中的点语法、构造方法
- 黑马程序员——OC基础之点语法
- 黑马程序员:OC基本语法
- 黑马程序员-OC基本语法
- 黑马程序员----OC核心语法
- 黑马程序员 OC语法补充
- 黑马程序员---OC--特有语法
- malloc函数
- Linux vsftp安装 - 解决vsftpd的530 Login incorrect错误
- hdu-1865-1sting(大数问题)
- Android中invalidate()和postInvalidate() 的区别
- Apache OFBIZ快速上手(四)--云服务模式--OFBIZ多租户
- 黑马程序员-OC-点语法
- 修改struts2中UI标签的<s:a>进行权限控制
- 面试题16:反转链表
- Could not load com.mysql.jdbc.SQLError. 解决办法
- Ajax POSt数据到PHP的方法
- Lua:元表(metatable)与元方法(meatmethod)
- mongodb 安装实战
- C# 学习 vs 工具栏设置
- jFileChooser showSaveDialog 保存文件