我有两个类,每个类都有一个使用相同代码的实例方法。
这段代码接受一个 NSString 并返回一个 NSArray。
目前,同一段代码在两个类中重复。
有没有办法分开写,两个类调用?我试图在 NSArray 的子类中创建一个方法,但是由于 NSArray 是一个抽象类,因此存在很多问题。有什么建议么?
谢谢你。
我有两个类,每个类都有一个使用相同代码的实例方法。
这段代码接受一个 NSString 并返回一个 NSArray。
目前,同一段代码在两个类中重复。
有没有办法分开写,两个类调用?我试图在 NSArray 的子类中创建一个方法,但是由于 NSArray 是一个抽象类,因此存在很多问题。有什么建议么?
谢谢你。
扩展类行为的正确方法不是继承 NSArray,而是在该类上创建一个类别。
因此,您可以在返回数组的 NSString 上创建一个类别,并且在将该类别导入项目后,您可以将其作为 NSString 的一部分来调用,例如:
NSString *myString = @"Hello";
NSArray *myArray = [myString generateArrayFromString];
您可以在此处找到有关如何创建类别的指南:
您可以尝试制作一个 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];
从它的声音(将字符串解析为 NSArray,并参考类的实例字段),您可以使该方法成为类(与实例)方法并从任一类调用它。
IE:
+(NSArray*)parseThisString:(NSString*)theString {
doSomething;
return result;
}
调用[TheNameOfTheClass parseThisString:inputString]
.
当然,如果您在类的实例中尊重值,这将不起作用。