OC学习之核心语法
2016-03-10 17:13
302 查看
一、点语法
用途:
OC当中通过@property和 @synthesize 配对使用来自动生成变量的set和get方法,通过使用点语法可以大大减少我们程序员代码量,也方便学习过其他语言的人上手OC语言简而言之:
1.减少代码量
2.方便其他语言使用者阅读
用法:
编译器遇到点语法时,会自动展开成其相应的方法
二、@property
@property可以自动生成某个成员变量的setter和getter声明比如:
在.h文件中
?
三、@synthesize
@synthesize可以在.m文件中自动生成setter和getter的实现,并且会访问该成员变量比如:
?
如果@synthesize定义一个未知的变量,那么这个变量的默认就是@private类型的
Xcode4.4以后,其实只需要用@property这个关键字就行了,它会自动生成成员变量,会声明和实现getter和setter方法
其缺陷是自动生成的成员变量是@private,子类只能通过geter和setter方法访问,但是可以手动改变成员变量的作用域
四、description
description默认返回的是 <类名:内存地址>
#import <Foundation/Foundation.h> #import "Person.h" int main() { Person *p = [[Person alloc] init]; p.age = 20; p.name = @"jack"; NSLog(@"%@",p); return 0; }
?
此时输出的结果就是:person:内存地址
因为Nslog(@"%@",p);这句会调用p的description方法,而方法默认返回的就是 <类名:内存地址>,所以想要返回自己想要的结果,可以在.m文件中修改description方法的返回值
#import "Person.h" @implementation Person - (NSString *)description { return [NSString stringWithFormat:@"%d,%@",_age,_name]; } @end
?
此时NSlog输出的就是年龄和名字了
五、SEL
每个方法都有一个和他相对应的SEL数据,每个SEL数据都相对应着这个方法的地址也可以理解为SEL就是对方法的一种包装,将方法包装成一个SEL类型的数据,去找对应的方法地址,找到方法地址就可以调用方法
方法调用的过程:
当调用方法的时候,编译器会把方法包装成SEL类型的数据,然后去类里找这个SEL数据相对应的方法的地址,找到之后就会调用这个方法
以上操作是有缓存的
其实调用方法还可以用SEL数据来调用
?
带参数的方法调用:
六、NOSLog补充
??
// 指针变量地址 NSLog(@"%p",&p); // 对象地址 NSLog(@"%p",p); // <类名:对象地址> NSLog(@"%@",p);
NSLog输出C语言字符的时候 不允许有中文
NSLog(@"%s",str);
相关文章推荐
- OC学习之 类和对象
- -OC学习之内存管理与ARC
- C语言之结构体
- 【∮凌锋∮】三星S5 系统三破解修改教程!!
- C语言之数组
- C语言函数的学习
- C语言之基本运算和流程控制
- C语言流程控制续
- EXISTS
- Java Service Wrapper简介与使用
- 依赖注入那些事儿
- 文字检测和识别5-LSTM简介
- tableview头视图与 tableview中间有空隙
- python 3.3 安装paramiko模块
- 谈谈python中的遍历
- 构建之法阅读笔记02
- StringBuffer类
- Linux-非结构化数据同步-Linux下Lsyncd+Rsync实现非结构化增量差异数据的同步5
- NSTimer 和runloop的问题,将timer加入到runloop----同时注意在viewwilldisappear里面设置为空和无效
- Entity Framework教程(第二版)