黑马程序员_OC核心语法之分类
来源:互联网 发布:全国68所网络教育 编辑:程序博客网 时间:2024/06/05 09:08
一、分类(category)
1.分类可以使得不修改原来类的代码的基础上,对某个类进行方法的扩充,
分类的声明和实现如下:(代码的例子还是使用上一篇blog-OC核心语法的Person类),加入实现的Person类跟上篇blog 中是相同的。然后在此节中,我们创建一个Person 类的分类的Person+LP.h 和Person+LP.m 分别为扩展方法的类的声明和实现。
2. 分类的注意:分类只能扩充方法,不能增加成员变量的定义
3. 类和分类中的如果有相同名称的方法(如果相同的话会覆盖掉原来类的同名方法,导致原类的方法不可用)调用的顺序是:分类的方法优先级是最高的,然后才是原来类的方法的优先级次之。如果一个类有多个分类的时候,编译的时候的顺序,就是方法调用的优先级。
//// Person+LP.h// OC核心语法//// Created by LPMac on 14-5-31.// Copyright (c) 2014年 itcast. All rights reserved.//#import "Person.h"@interface Person (LP)- (void)study;@end//// Person+LP.m// OC核心语法//// Created by LPMac on 14-5-31.// Copyright (c) 2014年 itcast. All rights reserved.//#import "Person+LP.h"@implementation Person (LP)- (void)study{ NSLog(@"正在学习----");}@end//// main.m// OC核心语法//// Created by LPMac on 14-5-30.// Copyright (c) 2014年 itcast. All rights reserved.//#import <Foundation/Foundation.h>#import "Person.h"#import "Person+LP.h"int main(int argc, const char * argv[]){ @autoreleasepool { Person *p1 = [[Person alloc]initWithAge:33 andName:@"jack"]; NSLog(@"年龄是:%d,名字是:%@",p1.age,p1.name); //调用分类的方法 [p1 study]; } return 0;}
二、获取内存中的类对象
1.
在OC中,类本身也是一个对象,它的类型是Class,简称为类对象
//获取类对象 Class c = [p1 class]; //利用Person类的对象方法 Class c1 = [Person class]; //利用Person类方法
2.
(1)当程序启动时,就会加载项目中所有的类。并且在类被加载完毕后会调用+ (void)load类方法,先加载父类load ,后加载子类的load 方法
(2)在类首次使用时,会调用一次+initialize方法,先加载父类initialize ,后加载子类的initialize 方法(3)在使用分类时,分类的load方法也会被加载,而且对于initialize方法,会调用子类的initialize的方法。 这里其实还是那个分类的基本原理,调用类和分类的同名函数时是会加载分类的方法。
三、
description 方法: 默认情况下,当使用"%@" 直接输出一个对象时,对象的输出结果是:<类名:对象地址>
如果我们要输出我们自定义格式,那么我们就要重写对象的description方法,以NSString 类为例:
//实例对象结果调用对象decription 方法- (NSString *)description{ return [NSString stringWithFormat:@"age = %d,name = %@",_age,_name]; }//类对象结果调用类方法decription 方法+ (NSString *)description{ return @"类方法decription";}
四、NSLog的输出的一些宏定义,NSLog输出C语言字符串的时候不能有中文,如果有中文可以使用printf函数进行打印
1 0
- 黑马程序员_OC核心语法之分类
- 黑马程序员_OC之核心语法
- 黑马程序员_OC面向对象之核心语法
- 黑马程序员_OC语法
- 黑马程序员_OC学习之点语法
- 黑马程序员_OC基础06_OC语法
- 黑马程序猿_OC之核心语法(上)
- 黑马程序猿_OC之核心语法(下)
- 黑马程序员_OC点语法
- 黑马程序员_OC特有语法
- 黑马程序员学习笔记_OC之给NSString增加分类
- 黑马程序员_OC学习之@property、点语法
- 黑马程序员_OC核心与法概述
- 黑马程序员_OC语言的分类
- 黑马程序员_OC中的分类(category)
- 黑马程序员_OC基础05_分类
- 黑马程序员_OC分类和构造方法
- 黑马程序员_OC中的点语法
- 【DFS+题意】#24 A. Ring road
- \r和\n在C语言中的区别
- QQ安装,安装路径无效,您没有权限在此位置写入数据,请重新选择
- Windows 8.1 JDK环境变量配置
- 数据库操作中为什么要采用外连接
- 黑马程序员_OC核心语法之分类
- RedHat平台下pureftpd搭建
- 和机器学习和计算机视觉相关的数学
- Hibernate 映射字段问题[ImprovedNamingStrategy]
- uml活动图浅析
- 微信_响应用户请求SDK;
- Maven_Nexus搭建、配置
- 用键盘移动笑脸
- 爱旅行