2016-12-11 4 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)INPUT1 = A、INPUT2 = B指定された初期化子とNSStringカテゴリ

###のB

2)INPUT1 = A。

3)入力2 = B

bは

それは警告

以下になり

" '自己' を欠落しているコンビニエンス初期化子を別の初期化に呼び出します"

上記が有効かどうかわかりませんinitが指定された初期設定者です(古いiOSバージョンで問題が発生する可能性があるかどうかわかりません)。

input1とinput2の両方がnilの場合、NSString出力はnilでなければなりません。

+6

'initWithInput1:input2:'メソッドがインスタンスメソッドであることは意味がありません。 'combineInput1:andInput2:'のような名前のクラスメソッドでなければなりません。 – rmaddy

+7

Objective-Cカテゴリのメソッドをオーバーライドしないでください。これは未定義の動作です。 – rmaddy

答えて

0

input1.length == 0input2.length == 0場合、あなたはsuper initを呼び出すことはありません、self設定していない、とあなたはまだselfを返します。おそらく、その場合はself = nilまたはreturn nilに設定します。

関連する問題