- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我看到在我发出的 POST 请求完成后 10 或 20 秒发生崩溃( didReceiveResponse
、 didReceiveData
和 connectionDidFinishLoading
都在崩溃发生之前就已触发)。
这是我用来发出请求的代码:
NSURL* url = [[NSURL alloc] initWithString:urlString];
[urlString release];
NSData* requestData = [jsonData dataUsingEncoding:NSUTF8StringEncoding];
NSString* requestDataLengthString = [[NSString alloc] initWithFormat:@"%d", [requestData length]];
NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:requestData];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:requestDataLengthString forHTTPHeaderField:@"Content-Length"];
[request setTimeoutInterval:30.0];
[url release];
[requestData release];
[requestDataLengthString release];
m_URLConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[request release];
这次崩溃的奇怪之处在于:如果我不调用 setHTTPBody 用我的NSData
对象,setValue:@"application/json"
对于 Content-Type
和 setValue:requestDataLengthString
对于 Content-Length
,崩溃不会不会发生。我对正在发生的事情感到非常困惑。据我所知,崩溃与发送 NSData
直接相关。反对我的要求。当它确实崩溃时,崩溃调用堆栈中的顶部元素 ( EXEC_BAD_ACCESS
) 如下:
objc_msgSend
CFRelease
HTTPMessage::~HTTPMessage
_CFRelease
HTTPWriteFilter::~HTTPWriteFilter
谁能想到我可能做错了什么?我完全不知道我做错了什么,如何解决它,或者如何解决它。有没有比我现在的方式更好的 POST 数据方式?
最佳答案
您是对的,问题出在您的 NSData
对象上。您正在这样分配它:
NSData* requestData = [jsonData dataUsingEncoding:NSUTF8StringEncoding];
根据 Memory Management Programming Guide for Cocoa 中规定的规则,您不是数据的所有者,因此您以后不应该对其调用 release
。 dataUsingEncoding
调用 autorelease
,因此该对象将在下次自动释放池耗尽时被release
d。因为您要添加一个额外的release
,自动释放池将尝试释放
一个已经被释放的对象,这会导致崩溃。
关于iPhone SDK : POSTing NSData with NSMutableURLRequest results in mysterious crash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/628472/
假设我有一个具有以下属性的虚拟机 FQDN :trialinstance.westus.cloudapp.azure.com Public IP : XXX.XXX.XXX.XXX Private I
假设我有一个具有以下属性的虚拟机 FQDN :trialinstance.westus.cloudapp.azure.com Public IP : XXX.XXX.XXX.XXX Private I
在移植游戏时,我得出以下声明 Object o = new Object[]{"A","B"}; 真的很奇怪! 但是当我尝试对“String”进行同样的操作时,编译器会向我报告错误消息 String
作为一个更大项目的一部分,我一直在构建一个编程语言检测器,即代码片段的分类器。我的基线模型非常简单:将输入标记化并将片段编码为词袋,或者,在这种情况下,bag-of-tokens,并在这些特征之上制作
我忘记将附带的变量添加到 printf() 调用中。 printf() 如何知道我要打印什么? int successful = 0;//Flag printf("\nEnter a number t
我正在集成 HTML 编辑器 CKEditor在我的 Cocoa 应用程序中使用 WebView。 到目前为止,它按预期工作,除了一件事:如果我打开 NSColorPanel在应用程序的任何其他位置并
我正在开发一款适用于 Android 的应用程序。在我的代码中有以下几行: if (shape != null && !created && isTap(touchDown, event)) {
我正在尝试对指向某个类的智能指针 vector 进行排序。我使用结构作为 std::sort 的第三个参数与 operator() : struct PhraseSmartPtrParseCreati
我在使用自动引用计数的 iOS 4.3 和 iOS 5 中工作。我在我的界面中声明了一个 NSDate 对象: NSDate *fingerprintsDate; 稍后,我设置了 NSDate - 使
最近我正在修复某人的代码。有一个大类不会解除分配。您必须发布 5 或 6 个版本才能将其释放。 我仔细地翻遍了大类,最终找到了各种需要发布的东西。 这让我思考:必须有一些非常简单的方法来“查找”对象上
这让我发疯。我有一个 UITableView,复制并粘贴了它。第二个在第一个单元格之前没有顶部填充,第一个有。堆栈中也没有神秘的 View 。到底是怎么回事?我要疯了,不想删除 UITableView
我遇到一个问题,IE 9(可能还有其他版本)无法正确显示我的水平列表。如您所见,最右边的元素被向下推了一点。 HTML: Lorem ipsum dolor sit ame
我已经为 .它按预期呈现,除了 svg 元素底部边缘的水平线。 svg来源是 你可以在这里看到错误的水平线 Codepen (它在底部,蓝色...)。 我希望线路消失
我从 Crashlytics 得到的报告是 Crashed: com.apple.main-thread SIGABRT ABORT at 0x357fedf0 我如何缩小这个谜团崩溃的范围? 此外,
我在 Git 中看到一个对我来说似乎非常神秘的行为。我保留了来自 Github 的 Linux 存储库的克隆。在本地玩 Git。明确地说,我在这个存储库中没有做太多事情:我获取更改、更新 master
关于 我有一个 android 应用程序,它有 2 个 Activity 。 Activity A 产生 Activity B, Activity B 访问另一个模块中的房间数据库。我使用 Koin
这个 Common Lisp 函数使用极其简单的幼儿园级算法和一些“案例”测试来简单地计算墙壁线框边缘的四个顶点,似乎负责为每个渲染帧动态分配 196608 字节; SBCL 的分析器告诉我,就 co
我正在解决“情书之谜”问题,可能我的逻辑是正确的,但它显示了时间问题问题是 Question here .我的解决方案如下。它包含两个函数,一个是theLoveLetterMystery(String
我正在通过 OpenGL 在伪二维 Canvas 中显示四边形。为此,我通过以下方式使用正交投影: gl.glMatrixMode(GL10.GL_PROJECTION); gl.glLoadIden
我的程序似乎总是会产生荒谬的错误。请给我指路。下面的代码段删掉了所有不相关的部分。谢谢。 代码段A部分似乎没有正确初始化数组,如何调试?代码段的 B 部分总是崩溃,我是否遗漏了什么? typedef
我是一名优秀的程序员,十分优秀!