2016-12-11 76 views
0
@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指定的初始化程序和NSString類別

一個### b

2)INPUT1 = A;

一個

3)輸入2 = B

b

它導致以下警告

「便利初始化缺少一個 '自我' 呼叫到另一個初始值設定」

我不知道以上是effi cient還是會導致任何問題,因爲init是指定的初始化程序(不知道它是否可能與舊的iOS版本有關)?

如果input1和input2均爲零,則NSString輸出應爲零。

+6

將'initWithInput1:input2:'方法作爲實例方法是沒有意義的。它應該是一個類名爲「combineInput1:andInput2:'的類方法。 – rmaddy

+7

並且不要嘗試覆蓋Objective-C類別中的方法。這是未定義的行爲。 – rmaddy

回答

0

如果input1.length == 0input2.length == 0,你不設置self,你不叫super init,你還是回到self。大概你想在這種情況下設置self = nilreturn nil

相關問題