指定的初始值设定项和NSString类别

时间:2016-12-11 01:27:41

标签: objective-c nsstring categories

@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)input1 = a,input2 = b

一个### B'/ P>

2)input1 = a;

3)输入2 = B

B'/ P>

导致以下警告

  

"便利初始化程序错过了自我'打电话给另一个初始化程序"

我不知道上述内容是否有效或是否会导致任何问题,因为init是指定的初始化程序(不知道它是否会出现旧iOS版本的问题)?

如果input1和input2都是nil,则NSString输出应为nil。

1 个答案:

答案 0 :(得分:0)

如果input1.length == 0input2.length == 0,您未设置self,则不会调用super init,但仍会返回self。在这种情况下,您可能想要设置self = nilreturn nil