OC 核心语法
来源:互联网 发布:linux 报文发送工具 编辑:程序博客网 时间:2024/05/01 19:23
一点语法
1. 点语法的本质还是方法调用
p.age = 10;相当于[p setAge:10];
[p age]; 相当于 p.age;
怎么验证 get/set 方法的本质?在 get/set 方法中添加打印验证.
二成员变量的作用域
1⃣ 基本概念
局部变量,全局变量都有自己的作用域,成员变量也不例外
2⃣ 类型
@private : 只能在当前类的实现@ implementation 中直接访问
@protected : 可以在当前类以及子类的实现@ implementation 中直接访问
@public : 任何地方都可以直接访问
@package : 同一个”体系内”(框架)可以访问,介于@ private 和@ public 之间
2. 继承补充
1⃣ 专业术语
父类\超类 superclass
子类 subclass\subclasses
2⃣ 单继承
3. @implementation 补充
没有@ interface, 只有@implementation, 也可以开发一个类
三分类(Category)
1. 分类的作用:在不改变类内容的基础上,可以为类增加一些方法
2. 类目的文件名的格式:”需要添加类目的类名 + 类目的名称”, (例如:想要给 NSString 类添加一个类目 Extension, 那么文件名就是NSString+Extension.h + NSString+Extension.m)
3. 类目的定义格式:
@interface 需要添加的类目的类名(类目名),类目的声明在. h 文件中声明,类目的实现在.m文件实现.
4. 使用注意:
1⃣ 分类只能增加方法,不能增加成员变量
2⃣ 分类方法实现中可以访问原来类中的成员变量
3⃣ 分类可以重新实现原来类中的方法,但是会覆盖掉原来的方法,会导致原来的方法没法在使用
4⃣ 方法调用的优先级:现在分类中查找对应的方法,如果没有找到,再到父类中查找,分类(最后编译的分类优先)à原来类à父类
5⃣ 一个类中可以定义多个分类,而且类目的作用可以沿袭到子类,就是父类的类目中的方法子类依然可以使用 super 关键字进行调用的.
5. 给系统类添加分类
1⃣ 创建类方法,计算出字符串中的阿拉伯数字的个数
int count = 0;
+ (int)numberCountOfString:(NSString*)str{
for(int i = 0; i< str.length;i ++){
unichar c = [str characterAtIndex:i];
if( c >= ‘0’&& c<=’9’){
count++;
}
}
return count;
}
2⃣ 创建对象方法,计算出字符串中的阿拉伯数字的个数
int count = 0;
- (int)numberCount{
for(int i = 0; i < str.length;i ++){
unichar c = [str characterAtIndex:i];
if( c >= ‘0’ && c<=’9’){
count++;
}
}
return count;
}
6. description方法(类方法和实例方法)
1⃣ 使用场合
默认情况下,利用 NSLog 和%@输出对象的时候,结果是:<类名:内存地址>
首先,在使用 NSLog 和%@输出对象的时候,会调用对象的-description 方法;拿到- description 方法的返回值(NSString *)显示在屏幕上;-description 方法默认返回的是”类名+内存地址”.决定实例对象的结果
2⃣ 类方法(+description)
当输出类对象的时候,会调用类的 description 方法,拿到+ description 方法,将结果打印在屏幕上.
7. NSLog 打印分析(从日志输出里面进行查看)
NSLog 输出 C语言字符串的时候, 不允许有中文的
Printf(“%s\n”,_FILE_);输出文件的路径
NSLog(@”%s\n”,_func_); 输出当前函数名
NSLog(@”%d”,_LINE_); 输出行号
8. Sel 数据类型
_cmd 代表着当前方法
SEL 其实是对方法的一种包装,将方法包装成一个 SEL类型的数据,去找对应方法的地址,找到方法地址就可以调用方法.
9.协议的概念和用法
1⃣ 上面就是定义了一个 WithProtocl 的协议
协议的定义格式:
@protocol 协议名 <父协议>
定义方法
@end
注:定义协议的关键字是@ protocol,同时协议也是可以继承父协议的
协议中定义的方法还有两个修饰符:
@required : 表示这个方法是其他类必须实现的,也是默认的值
@optional : 表示这个方法对于其他类实现是可选的
这里要注意的是,上面代码中的<NSObject>不是我们之前所说的类,,而是协议<NSObject>协议,它也是 OC中第一个协议.
2⃣下面是协议的使用:
Student.h
使用协议很简单,直接在继承类<NSObject>后面添加协议名<协议名>即可
然后在.m 文件中实现协议中的方法
使用方法(respondsToSelector:@selector),这个方法的作用是判断当前对象中是否定义了一个方法.
- OC核心语法
- OC核心语法
- OC核心语法
- ⑦--OC核心语法
- OC-8-核心语法
- OC语言核心语法
- OC 核心语法
- OC 核心语法罗列
- OC语法的核心
- OC核心语法(二)
- OC学习之核心语法
- OC语言之核心语法
- 黑马程序员----OC核心语法
- 学习笔记:OC核心语法
- OC学习之核心语法
- OC核心语法之分类
- OC-面对对象的核心语法
- 黑马程序员-10.OC的核心语法
- 了解 uri, content provide,包括 data android:host,android:scheme
- POJ——1458最长公共子序列
- Java中map学习笔记(一)
- 两种Linux下非交互式命令的实现
- 【独立开发者er Cocos2d-x实战 007】使用Cocos2dx UserDefault.xml
- OC 核心语法
- Android实现图片放大缩小
- Android early suspend/late resume
- 关于iOS逆向工程的工具(一)
- HTML5 data-* 自定义属性
- 浅谈继承关系和接口
- Android实现Session保持
- Kali Linux下安装VMware Tools
- 二叉排序树算法