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;
}

下面把新建类别的图附上

首先,新建的适合选择下面这个文件

下一步,然后 在第一行 写你自己定义的类别名称  第二行 是你要为哪个类添加类别

然后下一步 保存即可,就可以看到新建出来了一个类似类的两个文件

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-03 08:27:50

Snail—OC学习之类别Category的相关文章

OC学习笔记——类别(Category)

类别,有些程序员又称之为分类. 类别是一种为现有的类添加新方法的方式,尤其是为系统的做扩展的时候,不用继承系统类,可以直接为类添加新的方法.也可以覆盖系统类的方法. 如: @interface NSObject (MyCategory) - (void)myMethod; @end 这样我们就给NSObject 添加了一个方法 myMethod(). 注意,一般情况下,我们只用分类为现有类添加方法,而很少为现有类添加属性. 假设我们有一个Person 类 person.h 1 @interfac

Snail—OC学习之文件操作(非读写)

#import <Foundation/Foundation.h> //宏定义一个文件夹的路径信息 #define path @"/Users/XXX/Desktop/Snail" //宏定义一个文件的路径 #define filePath @"/Users/XXX/Desktop/Snail/Snail3/Snail.txt" int main(int argc, const char * argv[]) { @autoreleasepool { //

Snail—OC学习之数组NSArray

NSArray是OC中的数组,是用来存储对象的.可以是重复的.有序的 新建一个Dog的类,在main.m中引入Dog的头文件 #import <Foundation/Foundation.h> #import "Dog.h" int main(int argc, const char * argv[]) { @autoreleasepool { Dog * dog = [[Dog alloc] init]; //数组的创建方式 //空数组创建 NSArray * arrry

Snail—OC学习之选择器SEL

选择器:是一种变量的类型,用于存储方法,类似于C语言的函数指针 作用:用于UI控件的点击事件 新建一个Dog的类 在Dog.m中写两个方法 <span style="font-size:14px;">#import "Dog.h" @implementation Dog - (void)bark{ NSLog(@"狗在叫"); } - (void)barkToPeople:(NSString *)name{ NSLog(@"

Snail—OC学习之继承

继承在字面意思就是继承财产等等.就是儿子继承父亲的财产也好.各种东西.当然儿子也可以有父亲没有的其他东西.父亲也可以不让儿子继承一些东西 上面是说的现实生活中得例子. 所谓继承,是指一个对象直接使用另一对象的属性和方法.面向对象的变成语言都有继承 OC所有的官方类或者自定义类的直接父类及间接父类都是NSObjetc类 版权声明:本文为博主原创文章,未经博主允许不得转载.

Snail—OC学习之类及对象

对象是对客观事物的抽象,类是对对象的抽象.类是一种抽象的数据类型 面向对象的编程语言都是有类及对象的 类是由属性及方法组成. OC中的所有官方类及自定义的类都是NSObject的直接或者间接子类 下面看看类的编写规范 首先,COMMAND+N 新建一个类 Dog类 看到会生成两个文件.h和.m .h是对属性及方法的声明,.m是对方法实现. Dog.h文件中编写如下 #import <Foundation/Foundation.h> @interface Dog : NSObject{ //名字

Snail—OC学习之NSNumber

在以后的学习或者以后做项目的时候 会希望把基本数据类型,例如:int.float等等数值 也存到数组或者字典中 因为数组.字典只能存储对象 所以,NSNumber类可以对基本数据进行封装成一个对象 进行存储 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSNumber * intNumber = [NSNumber numberWithInt:11]

Snail—OC学习之本地数据持久化(plist)

plist文件的格式 plist是一种数据持久化的文件 1.最外层通常为数组或者字典 2.plist里面的数据 只局限于数组.字典.逻辑值(BOOL).NSNumber.NSData.NSDate.字符串等数据类型 3.无法存储自定义类型的对象 plist作用 1.不适用它作为缓存 无法存储自定义类型的对象 2.通常存储长时间不容易发生变化的数据.国家.省市区.汽车品牌.项目的info.plist工程的设置信息 3.占用内存小 #import <Foundation/Foundation.h>

Snail—OC学习之本地数据持久化(归档)

#import <Foundation/Foundation.h> #import "Dog.h" int main(int argc, const char * argv[]) { @autoreleasepool { NSString * filePath = @"/Users/student/Desktop/snail/array.data"; //对官方类创建的对象进行存储 NSArray * array = @[@"one"