gpt4 book ai didi

ios - 在 connectionDidFinishLoading 中接收错误,EXC_BAD_ACCESS

转载 作者:行者123 更新时间:2023-11-28 20:42:02 24 4
gpt4 key购买 nike

我在 NSURLConnection 委托(delegate)方法 connectionDidFinishLoading 执行时遇到错误。有趣的是,它可以在模拟器上运行,但在物理设备上会崩溃。更有趣的是,只有当这一系列操作完成时它才会崩溃,

  • 运行应用
  • 显示推文! (太棒了)
  • 按主页键
  • 双击主页按钮
  • 强制退出应用
  • 再次打开应用
  • 崩溃了!!!! ( :( )…一直崩溃直到你重启你的手机!

错误日志:

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0xa0000008
Crashed Thread: 0

Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libobjc.A.dylib 0x321befbc 0x321bb000 + 16316
1 Tittle-Tattle 0x0002cf10 -[MapViewController connectionDidFinishLoading:] (MapViewController.m:108)
2 Foundation 0x3316bc32 0x330a5000 + 814130
3 Foundation 0x330c36e2 0x330a5000 + 124642
4 Foundation 0x330c36ac 0x330a5000 + 124588
5 Foundation 0x330c35ce 0x330a5000 + 124366
6 CFNetwork 0x35e7689e 0x35e67000 + 63646
7 CFNetwork 0x35e6b53e 0x35e67000 + 17726
8 CFNetwork 0x35e6b632 0x35e67000 + 17970
9 CFNetwork 0x35e6b23c 0x35e67000 + 16956
10 CFNetwork 0x35e6b172 0x35e67000 + 16754
11 CoreFoundation 0x34176afc 0x340e9000 + 580348
12 CoreFoundation 0x341762c8 0x340e9000 + 578248
13 CoreFoundation 0x3417506e 0x340e9000 + 573550
14 CoreFoundation 0x340f84d6 0x340e9000 + 62678
15 CoreFoundation 0x340f839e 0x340e9000 + 62366
16 GraphicsServices 0x3254dfc6 0x3254a000 + 16326
17 UIKit 0x3734e73c 0x3731d000 + 202556
18 Tittle-Tattle 0x000200e0 main (main.m:16)
19 Tittle-Tattle 0x00020084 start + 32

代码:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

[urlConnection cancel];
[urlConnection release];
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

//Since we got new fresh data we shall put it in LatestLocationData entity in CoreData
[self insertLastKnownLocationDataIntoCoreDataWith:responseString];

//Test purpose only, See what we have got in CoreData
[self fetchLastKnownLocationDataFromCoreData];

NSDictionary *results = [responseString JSONValue];
placesNearBy = [results objectForKey:@"results"];

[responseString release];

[self dropNearByPlacesAnnotationsFrom:placesNearBy];

}

问题:这可能是什么原因?

类似的问题(不是我提出的!)以前曾问过但没有人回答这个问题:Application not running in iOS 5


到目前为止,我的理解是,EXE_BAD_ACCESS 仅在您尝试访问尚未分配的内存地址或之前分配但现在已释放的内存地址时发生。

在评论回复后编辑:

嘿 Firoze,这就是我初始化 NSURLConnection 的方式

urlConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

最佳答案

查看您的评论,我建议您对所有 ivar 使用 @property 声明。它们将减轻您必须执行的所有手动内存管理,这可能是您的问题所在。

快速示例

YourClass.h

@interface YourClass
@property (nonatomic, retain) NSURLConnection *urlConnection;
// More ivars

// Method declations
@end

YourClass.m

@interface YourClass

@synthesize urlConnection = _urlConnection;

// The method where you instantiate urlConnection
{
NSURLConnection *urlConnection = [[NSURLConnection alloc] initWithRequest:request
delegate:self];
self.urlConnection = urlConnection;
[urlConnection release]; urlConnection = nil;

// Do whatever else you do here
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
[self.urlConnection cancel];
self.urlConnection = nil; <- This takes care of releasing the ivar and setting it to nil so there is no dangerous hanging pointer

// ... the rest of your method
}

[urlConnection cancel];
[urlConnection release];
// You need to clean up after yourself with any ivars you make
- (void)dealloc
{
[_urlConnection release];
// Release any other ivars
[super dealloc];
}
@end

关于ios - 在 connectionDidFinishLoading 中接收错误,EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8108843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com