0

我有两个类,每个类都有一个使用相同代码的实例方法。

这段代码接受一个 NSString 并返回一个 NSArray。

目前,同一段代码在两个类中重复。

有没有办法分开写,两个类调用?我试图在 NSArray 的子类中创建一个方法,但是由于 NSArray 是一个抽象类,因此存在很多问题。有什么建议么?

谢谢你。

4

3 回答 3

4

扩展类行为的正确方法不是继承 NSArray,而是在该类上创建一个类别。

因此,您可以在返回数组的 NSString 上创建一个类别,并且在将该类别导入项目后,您可以将其作为 NSString 的一部分来调用,例如:

NSString *myString = @"Hello";
NSArray *myArray = [myString generateArrayFromString];

您可以在此处找到有关如何创建类别的指南:

自定义现有类

于 2013-09-19T11:26:31.067 回答
1

您可以尝试制作一个 NSString 类别。此类别将返回数组。例如:

//
//  NSString+MyCategory.h

#import 

@interface NSString (MyCategory)

-(NSArray *)myMethod;

@end

//
//  NSString+MyCategory.m

#import "NSString+MyCategory.h"

@implementation NSString (MyCategory)

-(NSArray *)myMethod {
    NSArray *_arr = [self componentsSeparatedByString:@","];
    return _arr;
}

@end

然后在您的班级(或您想要的任何代码)中,您可以导入类别:

#import "NSString+MyCategory.h"

然后在任何字符串上使用它:

NSArray *myArray = [anyString myMethod];
于 2013-09-19T11:32:35.513 回答
0

从它的声音(将字符串解析为 NSArray,并参考类的实例字段),您可以使该方法成为类(与实例)方法并从任一类调用它。

IE:

+(NSArray*)parseThisString:(NSString*)theString {
    doSomething;
    return result;
}

调用[TheNameOfTheClass parseThisString:inputString].

当然,如果您在类的实例中尊重值,这将不起作用。

于 2013-09-19T11:47:16.587 回答