【发布时间】:2016-12-11 01:27:41
【问题描述】:
@implementation NSString (StringCategory)
-(id)init{
self =[super init];
return self;
}
-(id)initWithInput1:(NSString*)input1 input2:(NSString*)input2{
input1 = [input1 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
input2 = [input2 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
if(input1.length>0 && input2.length>0){
self = [NSString stringWithFormat:@"%@###%@",input1,input2];
}else if(input1.length>0){
self = input1;
}else if(input2.length>0){
self = input2;
}
return self;
}
@end
以上代码产生以下输出。 1) 输入1=a , 输入2=b
a###b
2) 输入1=a;
一个
3)input2=b
b
它会导致以下警告
“便利初始化程序缺少对另一个初始化程序的‘自我’调用”
我不知道上述方法是否有效或会导致任何问题,因为init 是指定的初始化程序(不知道它是否会在旧 iOS 版本中出现问题)?
如果 input1 和 input2 都为 nil,则 NSString 输出应为 nil。
【问题讨论】:
-
将
initWithInput1:input2:方法作为实例方法是没有意义的。应该是类方法,名称如combineInput1:andInput2:。 -
并且不要试图覆盖 Objective-C 类别中的方法。这是未定义的行为。
标签: objective-c nsstring categories