NSArray`(NSExtendedArray) 是一个用于处理数组的类,它继承自 `NSArray`。这个类提供了一些额外的功能,例如将数组中的元素按照给定的字符串拼接成一个新的字符串。下面是一个简单的使用方法示例:

```objective-c

// 创建一个包含字符串的数组

NSArray *arr = @[@"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", @"10", @"11", @"12"];

// 使用 "_" 作为分隔符,将数组中的元素拼接成一个新的字符串

NSString *str = [arr componentsJoinedByString:@"_"];

// 打印结果

NSLog(@"str : %@", str);

```

输出结果:

```

2019-07-03 10:03:16.937796+0800 AKTools[1744:35435] str : 1_2_3_4_5_6_7_8_9_10_11_12

```

此外,如果尝试使用 `NSNumber` 类型,也可以正常使用:

```objective-c

// 创建一个包含数字的数组

NSArray *arr = @[@(1), @(2), @(3), @(4), @(5), @(6), @(7), @(8), @(9), @(10), @(11), @(12)];

// 使用 "+" 作为分隔符,将数组中的元素拼接成一个新的字符串

NSString *str = [arr componentsJoinedByString:@"+"];

// 打印结果

NSLog(@"str : %@", str);

```

输出结果:

```

2019-07-03 10:20:46.066952+0800 AKTools[1957:42780] str : 1+2+3+4+5+6+7+8+9+10+11+1

你可以使用以下代码重构`componentsSeparatedByString`方法:

```objective-c

#import

@interface NSString (NSStringExtensionMethods)

/// 将字符串按照给定的字符分割成数组,注意看,这里的返回值泛型给定了NSString类型,也就是说返回的数组中的元素全部都是字符串,如果需要用数字的话,最好自己在做一些转换

- (NSArray *)componentsSeparatedByString:(NSString *)separator;

@end

@implementation NSString (NSStringExtensionMethods)

- (NSArray *)componentsSeparatedByString:(NSString *)separator {

NSMutableArray *result = [NSMutableArray array];

NSRange range = [self rangeOfString:separator options:0 range:NSMakeRange(0, self.length)];

int startIndex = 0;

while (range.location != NSNotFound) {

int endIndex = range.location + range.length;

NSString *substring = [self substringWithRange:NSMakeRange(startIndex, endIndex - startIndex)];

[result addObject:substring];

startIndex = endIndex;

range = [self rangeOfString:separator options:0 range:NSMakeRange(startIndex, self.length - startIndex)];

}

if (startIndex < self.length) {

NSString *substring = [self substringWithRange:NSMakeRange(startIndex, self.length - startIndex)];

[result addObject:substring];

}

return result;

}

@end

```

使用示例:

```objective-c

NSString *testStr = @"1_2_3_4_5_6_7_8_9_10_11_12";

NSArray *arr = [testStr componentsSeparatedByString:@"_"];

NSLog(@"arr : %@", arr);

```

打印结果:

```

2019-07-03 10:10:02.263319+0800 AKTools[1824:38234] arr : (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)

```