目的を達成するための標準パターンは2つあります。
(1)メソッドの多くの引数の形式を記述し、引数の簡略化バージョンを少なくします。たとえば、NSStringの上、以下の方法を考えてみます。
- (NSComparisonResult)compare:(NSString *)string;
- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask;
- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask
range:(NSRange)compareRange;
- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask
range:(NSRange)compareRange locale:(id)locale;
最初の3は、概念的にある第四版に至るまでの呼び出しとして実装[具体的に、おそらく、私はチェックしませんでした]。 -compare:calls -compare:options:range:locale:3つの追加引数の適切なデフォルト値を指定します。
(2)もう1つのパターンは、メソッドの多数の引数バージョンを実装し、引数がNULL/nilである場合にデフォルト値を提供するか、デフォルト値が望ましいことを示す値に設定することです。 NSDataにはこのパターンで実装されたメソッドがあります。たとえば:あなたはreadOptionsMask引数に0を渡すと
+ (id)dataWithContentsOfFile:(NSString *)path options:(NSDataReadingOptions)readOptionsMask
error:(NSError **)errorPtr;
は、NSDataのは、内部的に定義されたデフォルトの設定を使用してファイルの内容を読み込みます。そのデフォルト設定は、時間とともに変化する可能性があります。
重複:http://stackoverflow.com/questions/561185/optional-arguments-in-objective-c-2-0 –