8

かなり簡単な質問:

クラスにinitメソッドがあり、うまくいかない可能性があります。もしそうなら、私は「nilを返す」ことを計画していますが、エラーも返したいと思います。initメソッドにNSError**パラメーターを設定するのは悪い習慣ですか?私のメソッド宣言は次のようになります。

- (id) initWithArgs:(NSString*) args andError:(NSError**)error;

ニック、ありがとう

4

1 に答える 1

7

珍しいことですが、必ずしも悪い習慣ではないと思います。ただし、メソッドの2番目の部分には、「andError:」ではなく「error」という名前を付けます。メソッド名の一部を「および」で接続する必要はありません。この場合、オブジェクトの初期化にエラーが使用されているという印象も与えられます。ただそれを作りなさい:

- (id) initWithArgs:(NSString*) args error:(NSError**)error;

また、他の何か(nilなど)を返す予定がある場合は、割り当てられたオブジェクトを解放することを忘れないでください。

- (id) initWithArgs:(NSString*) args error:(NSError**)error
{
    if ((self = [super init])) {
        if (canInitThisObject) {
            // init this object
        }
        else {
            [self release];
            self = nil;
            if (error != nil) {
                *error = [NSError errorWithDomain:someDomain code:someCode: userInfo:nil];
            }
        }
    }
    return self;
}
于 2012-03-25T00:01:59.983 に答える