Ios 从两个类访问同一段代码

Ios 从两个类访问同一段代码,ios,objective-c,ipad,cocoa-touch,Ios,Objective C,Ipad,Cocoa Touch,我有两个类,每个类都有一个使用相同代码段的实例方法 这段代码接受一个NSString并返回一个NSArray 目前,同一段代码在两个类中重复 有没有一种方法可以分别编写并由两个类调用它?我试图在NSArray的子类中创建一个方法,但由于NSArray是一个抽象类,因此存在许多问题。有什么建议吗 谢谢。要扩展类的行为,正确的方法是在该类上创建一个类别,而不是对NSArray进行子类化 因此,您可以在NSString上创建一个返回数组的类别,并在将该类别导入到项目后,可以将其作为NSString的一

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

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

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

有没有一种方法可以分别编写并由两个类调用它?我试图在NSArray的子类中创建一个方法,但由于NSArray是一个抽象类,因此存在许多问题。有什么建议吗


谢谢。

要扩展类的行为,正确的方法是在该类上创建一个类别,而不是对NSArray进行子类化

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

NSString *myString = @"Hello";
NSArray *myArray = [myString generateArrayFromString];
您可以在此处找到有关如何创建类别的指南:


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

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

NSString *myString = @"Hello";
NSArray *myArray = [myString generateArrayFromString];
您可以在此处找到有关如何创建类别的指南:


您可以尝试创建NSString类别。此类别将返回数组。 例如:

然后在类中(或在代码中输入任何内容),可以导入类别:

#import "NSString+MyCategory.h"
然后在任何字符串上使用它:

NSArray *myArray = [anyString myMethod];

您可以尝试创建NSString类别。此类别将返回数组。 例如:

然后在类中(或在代码中输入任何内容),可以导入类别:

#import "NSString+MyCategory.h"
然后在任何字符串上使用它:

NSArray *myArray = [anyString myMethod];
从它的声音(将字符串解析为NSArray,并引用类的实例字段)可以使该方法成为类(vs instance)方法,并从任何一个类调用它

即:

使用
[TheNameOfClass parseThisString:inputString]
调用

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

从它的声音(将字符串解析为NSArray,并参考类的实例字段)可以将该方法设置为类(vs instance)方法,并从任何一个类调用它

即:

使用
[TheNameOfClass parseThisString:inputString]
调用


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

不要在这样的方法名称中使用
get
,它在Cocoa上下文中有更具体的含义。如果命名方法
get
,通常意味着调用方负责提供缓冲区以获取输出。例如,请参见
getObjects:range:
from
NSArray
getCharacters:range:
from
NSString
,以及
getStreamsToHost:port:inputStream:outputStream:
from
NSStream
。不要在这样的方法名称中使用
get
,它在Cocoa上下文中有更具体的含义。如果命名方法
get
,通常意味着调用方负责提供缓冲区以获取输出。例如,请参见
getObjects:range:
from
NSArray
getCharacters:range:
from
NSString
,以及
getStreamsToHost:port:inputStream:outputStream:
from
NSStream