0

ガベージコレクションを使用するプロジェクトの場合: Clangは、 *anErrorを割り当てる行で「潜在的なnull逆参照....」を警告します。

しかし、これは次のように私には正しく見えます:なぜNSErrorは二重間接参照を必要とするのですか?(ポインターへのポインター)

誰かが私が見ていないものを見ることができますか?

- (NSData *)bookmarkDataForCurrentURL:(NSURL *)theURL error:(NSError **)anError
{
    NSArray *bkKeys = [CBPrepCommon bookmarkPropertyKeys];
    NSError *errorA = nil;
    NSData *bkmark = [theURL bookmarkDataWithOptions:NSURLBookmarkCreationPreferFileIDResolution includingResourceValuesForKeys:bkKeys relativeToURL:nil error:&errorA];

    if (![bkmark length] > 0) {
    if (errorA) {
        // error here
        *anError = [NSError errorWithDomain:[errorA domain] code:[errorA code] userInfo:[errorA userInfo]];
    }
    return nil;
}
return bkmark;

}

4

1 に答える 1

0
if (errorA && anError) {
    // error here
    *anError = [NSError errorWithDomain:[errorA domain] code:[errorA code] userInfo:[errorA userInfo]];
}

編集:さらにきれい:

- (NSData *)bookmarkDataForCurrentURL:(NSURL *)theURL error:(NSError **)anError
{
    NSArray *bkKeys = [CBPrepCommon bookmarkPropertyKeys];
    NSData *bkmark = [theURL bookmarkDataWithOptions:NSURLBookmarkCreationPreferFileIDResolution includingResourceValuesForKeys:bkKeys relativeToURL:nil error:anError];

    if ([bkmark length] == 0) {
        return nil;
    }

    return bkmark;
}
于 2012-06-12T18:52:05.040 に答える