Snail—OC学习之类别Category
类别就是向类加入一些实用的功能或者方法 利于开发 类能够是系统类、能够是自己定义类
类别跟子类是不一样的。类别仅仅能加入一些方法 属性变量什么的不能够加入
不创建新类,就可以对已有类进行扩展
做项目的时候 跟其它程序猿会更好的合作
新建类别的图放在最后面
我们为系统类NSArray加入一个打印方法 使得能输出中文 
界面例如以下
然后再NSArray+MyNSLog.h中声明一个函数
#import <Foundation/Foundation.h> @interface NSArray (MyNSLog) - (NSString *)printChinese; @end
然后再NSArray+MyNSLog.m中实现
#import "NSArray+MyNSLog.h"
@implementation NSArray (MyNSLog)
- (NSString *)printChinese{
    NSMutableString * string = [[NSMutableString alloc] init];
    [string appendString:@"{\n"];
    //我们是位系统类NSArray加入一个能打印出中文的功能 即以下的self是指的我们要输出的数组
    //即就是要输出中文的数组
    for (int i = 0; i < self.count; i++) {
      //字符串能够输出中文
      [string appendFormat:@"\t%@,\n",self[i]];
    }
    [string appendFormat:@"}"];
    return string;
}
@end
在main.m中仅仅需引入类别的头文件就可以 假设是自己定义的类 也是仅仅需把类别的头文件进入就可以
#import <Foundation/Foundation.h>
#import "NSArray+MyNSLog.h" int main(int argc, const char * argv[])
{ @autoreleasepool { NSArray * array = @[@"我是",@"蜗牛",@"Snail"];
//系统的输出结果 中文已乱码
/*
(
"\U6211\U662f",
"\U8717\U725b",
Snail
)
*/
NSLog(@"%@",array); //当我们用加入的那个功能输出时 中文能够输出来
/*
{
我是,
蜗牛,
Snail,
}
*/
NSLog(@"%@",[array printChinese]);
}
return 0;
}
以下把新建类别的图附上
首先,新建的适合选择以下这个文件
下一步,然后 在第一行 写你自定义的类别名称 第二行 是你要为哪个类加入类别
然后下一步 保存就可以,就能够看到新建出来了一个类似类的两个文件
Snail—OC学习之类别Category的更多相关文章
- OC学习笔记——类别(Category)
		
类别,有些程序员又称之为分类. 类别是一种为现有的类添加新方法的方式,尤其是为系统的做扩展的时候,不用继承系统类,可以直接为类添加新的方法.也可以覆盖系统类的方法. 如: @interface NSO ...
 - OC学习7——类别、扩展和协议
		
1.我么在调用NSLog()方法打印一个对象时,实际上是调用了该对象的description方法,这个description方法就和Java中的toString()方法一样.所以,下面两行代码其实是一 ...
 - iOS学习笔记之Category
		
iOS学习笔记之Category 写在前面 Category是类别(也称为类目或范畴),使用Category,程序员可以为任何已有的类添加方法.使用类别可以对框架提供的类(无法获取源码,不能直接修改) ...
 - IOS开发-OC学习-常用功能代码片段整理
		
IOS开发-OC学习-常用功能代码片段整理 IOS开发中会频繁用到一些代码段,用来实现一些固定的功能.比如在文本框中输入完后要让键盘收回,这个需要用一个简单的让文本框失去第一响应者的身份来完成.或者是 ...
 - iOS学习笔记06—Category和Extension
		
iOS学习笔记06—Category和Extension 一.概述 类别是一种为现有的类添加新方法的方式. 利用Objective-C的动态运行时分配机制,Category提供了一种比继承(inher ...
 - 分类(类别/Category)与 类扩展(Extension)
		
一.分类(类别/Category) 1.适用范围 当你已经封装好了一个类(也可能是系统类.第三方库),不想在改动这个类了,可是随着程序功能的增加需要在类中增加一个方法,这时我们不必修改主类, ...
 - 类别(Category)与扩展(Extensions)
		
一.类别(Category) 类别(Category)是一种可以为现有的类(包括类簇:NSString...,甚至源码无法获得的类)添加新方法的方式无需从现有的类继承子类.类别添加的新方法可以被子类继 ...
 - iOS类别(Category)
		
iOS类别(Category)与扩展(Extension) 苹果的官方文档 Category在iOS开发中使用非常频繁.尤其是在为系统类进行拓展的时候,我们可以不用继承系统类,直接给系统类添加方法,最 ...
 - OC学习总结之面向对象和类
		
OC学习总结之面向对象和类 Objective-c是c语言的母集合,它的原意就是在原始的c语言的主体上加入面向对象的特性.1.面向对象和面向过程 面向对象和面向过程是编程的两种思考方式.面向对象 ...
 
随机推荐
- 《Linux信息安全实用教程》学习笔记
			
在GRUB中设置密码 vi /etc/grub.conf 增加: password 或者: password --md5 (MD5值) 使用yyd用户能以root用户执行所有命令 vi /etc/ ...
 - elasticSearch nested exist与missing查询
			
elasticSearch nested查询,简单意义上,你可以理解为,它不会被索引,只是被暂时隐藏起来,而查询的时候,开关就是使用nested query/filter去查询 下面我有一个例子,是查 ...
 - 剑指offer面试题12-打印1到最大的n位数
			
题目: 输入一个数字n,按顺序打印出从1最大的n位十进制数.比方输入3,则打印出1.2.3最大的三位数即999 这道题的主要陷阱就在大数的处理,仅仅要将这个考虑进去,用字符串来表示.就好说了. 那差点 ...
 - 【Nodejs】理想论坛帖子爬虫1.02
			
在1.01版本中,我发现各回调函数找到数据后再插入数据库有个竞争问题不好解决,如果等所有回调都完成也没有好的处理方法,因为启动不止一处启动了新的TopicSpider实例. 于是我决定把读数据和写DB ...
 - IO介绍
			
IO在计算机中指Input/Output,也就是输入和输出.由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口. 比如你打开 ...
 - android 实现QQ好友列表
			
在某些Android开发群里,看到有些新手问怎么实现QQ好友列表,其实网上一搜挺多的.接触Android,也才一年的时间,大部分时间花在工作上(解bug...),界面上开发很少参与.自己维护的系统应用 ...
 - (字符串的处理4.7.22)POJ 3337 Expression Evaluator(解析C风格的字符串)
			
/* * POJ_3337.cpp * * Created on: 2013年10月29日 * Author: Administrator */ #include <iostream> # ...
 - Linux用户、组帐号和权限(学习笔记九)
			
一.用户分类 超级用户:root 普通用户:由超级用户和管理员创建,一般只在自己的目录中有完全的权限 程序用户: 二.用户账号管理 常用命令: useradd:添加用户 userdel:删除用户 pa ...
 - JDBC二查询(web基础学习笔记八)
			
一.建立数据库 --创建news表空间 CREATE TABLESPACE tbs_news DATAFILE 'F:\ORACLE\news.dbf' SIZE 10M AUTOEXTEND ON; ...
 - Java  AES 加密工具类
			
package com.microwisdom.utils; import java.security.NoSuchAlgorithmException; import java.security.S ...