0

ドキュメントや投稿が見つからないという奇妙なエラーがあります。標準の教科書メソッドを使用してWebサービス(プライバシーのために変更されたURL)に接続しようとすると、[NSURLConnectioninitWithRequest]でEXC_BAD_INSTRUCTIONまたはEXC_BAD_ACCESSを受け取ります。

最も奇妙なことは、問題のある行を例外なくステップオーバーできる場合がありますが、10回のうち9回は、このエラーが発生します。助言がありますか?

- (void)viewDidLoad {
    NSURL *url = [NSURL URLWithString:@"http://heres/where/my/webservice/url/is/"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:30.0];

    // cancel any old connection
    if(connection) {
        [connection cancel];
        [connection release];
    }

    // create new connection and begin loading data
    connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    if(connection) {
        // if the connection was created correctly, release old data (if any), and alloc new
        [data release];
        data = [[NSMutableData data] retain];
    }

    [url release];
    [request release];
}

ヘルプや提案、RTFMは大歓迎です!

4

2 に答える 2

1

自動解放されたオブジェクトを解放しています。

NSURL *url = [NSURL URLWithString:@"…"];
NSURLRequest *request = [NSURLRequest requestWithURL:url …];
// …
[url release];
[request release];

Clangはこれらをキャッチできるはずだと思います。「ビルド」→「ビルドと分析」(Cmd-Shift-A)を参照してください。Clangはあなたの友達です、それに慣れてください。

于 2009-11-20T06:15:58.610 に答える
0

EXC_BAD_ACCESSは、すでに解放されているオブジェクトを解放しようとしていることを意味します。zoulが言うように、使用するurlメソッドとrequestメソッドは自動解放メソッドであるため、コードの最後で手動で解放しないでください。

あなたがすべきことは彼の答えを受け入れることです...彼が正しいからです。

于 2009-11-25T08:28:01.117 に答える