2011-04-07 60 views
1

我新的目標C,所以我真的不甚至知道這消息意味着:接收EXC_BAD_ACCESS消息,下面的代碼

EXC_BAD_ACCESS

當執行以下代碼:

-(void)HelloWorld 
{ 
    NSURL *url = [NSURL URLWithString:@"http://example.com/service.asmx/HelloWorld"]; 
    NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL: url]; 

    //do post request for parameter passing 
    [request setHTTPMethod:@"POST"]; 

    //set the content type to JSON 
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 

    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 
    [connection release]; 
    [request release]; 
} 

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ 
    // Store incoming data into a string 
    NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
} 

我試圖與Json框架集成。

我打電話給HelloWorld,它會對我的服務執行一個異步請求。奇怪的是,它有一次工作,現在我每隔一段時間都會收到這條EXC_BAD_ACCESS消息。任何想法會造成這種情況?

+0

命名約定:' - (void)helloWorld' – raidfive 2011-04-07 02:31:02

+0

@raidfive謝謝,從.NET轉換;) – 2011-04-07 13:48:30

回答

5

您不應該發佈請求。它已經自動發佈。

+1

我想添加autorelease可見的方法的命名約定。請記住以下內容:名稱中帶有'copy','alloc'的方法應該手動發佈。 – 2011-04-07 02:23:24

+1

其實它是以「複製」,「分配」,「保留」和「新」開始的方法, – Julien 2012-04-05 12:04:56

2

EXC_BAD_ACCESS意味着你有一個糟糕的指針。在你的情況下,這是因爲你已經釋放請求,當它已經autoreleased。

1

你的代碼還有另一個問題(與崩潰無關)。您創建一個NSURLConnection,並在創建後立即釋放連接。創建異步連接時,應該在委託方法中釋放連接(如果連接失敗或連接完成加載)。