【问题标题】:Crash when calling removeItemAtPath调用 removeItemAtPath 时崩溃
【发布时间】:2018-10-25 00:11:04
【问题描述】:

我将在主线程上调用 save(archive) 和 remove 方法。删除一个后未归档的本地失败。但是,我自己无法重新出现崩溃。但它出现在大多数用户身上。 像这样的崩溃日志:

崩溃:com.apple.main-thread EXC_BAD_ACCESS KERN_PROTECTION_FAILURE 0x0000000170043780 -[XYPHPostModel(Manager) removeDraft:]

Crashed: com.apple.main-thread
0  (Missing)                      0x170043780 (Missing)
1  (Missing)                      0x170043780 (Missing)
2  Foundation                     0x18545555c -[NSFileManager removeItemAtPath:error:] + 84
3  discover                       0x10023fe2c -[XYPHPostModel(Manager) removeDraft:] (XYPHPostModel+Manager.m:130)
4  discover                       0x10023f4fc -[XYPHPostModel(Manager) finishPost] (XYPHPostModel+Manager.m:40)
5  discover                       0x100252024 -[XYPHPostNoteModel(Manager) setPostStatusToSuccess:] (XYPHPostNoteModel+Manager.m:600)
6  discover                       0x10025275c __43-[XYPHPostNoteModel(Manager) postToServer:]_block_invoke_2 (XYPHPostNoteModel+Manager.m:639)
7  discover                       0x10082ec3c __89-[XYAPIClient xy_requestPutWithRoute:withParams:withKeyPath:withPattern:success:failure:]_block_invoke (XYAPIClient.m:767)
8  discover                       0x100ef2428 -[XYRKHTTPSessionManager handleResponse:success:failure:] (XYRKHTTPSessionManager.m:454)
9  discover                       0x100ef0774 __78-[XYRKHTTPSessionManager putForRouteNamed:pattern:parameters:success:failure:]_block_invoke (XYRKHTTPSessionManager.m:254)
10 discover                       0x1007a5c2c __116-[AFHTTPSessionManager dataTaskWithHTTPMethod:URLString:parameters:uploadProgress:downloadProgress:success:failure:]_block_invoke.80 (AFHTTPSessionManager.m:290)
11 discover                       0x1007b8ba0 __72-[AFURLSessionManagerTaskDelegate URLSession:task:didCompleteWithError:]_block_invoke_2.150 (AFURLSessionManager.m:308)
12 libdispatch.dylib              0x18388a1fc _dispatch_call_block_and_release + 24
13 libdispatch.dylib              0x18388a1bc _dispatch_client_callout + 16
14 libdispatch.dylib              0x18388eb2c _dispatch_main_queue_callback_4CF + 428
15 CoreFoundation                 0x1849ae810 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12
16 CoreFoundation                 0x1849ac3fc __CFRunLoopRun + 1660
17 CoreFoundation                 0x1848da2b8 CFRunLoopRunSpecific + 444
18 GraphicsServices               0x18638e198 GSEventRunModal + 180
19 UIKit                          0x18a9217fc -[UIApplication _run] + 684
20 UIKit                          0x18a91c534 UIApplicationMain + 208
21 discover                       0x1006bf610 main (main.m:31)
22 (Missing)                      0x1838bd5b8 (Missing)

【问题讨论】:

  • 很抱歉,但这绝对没有提供上下文(如果您想解决崩溃,这很关键),因此很难回答。您应该查看How to Ask 并使用StackOverflow's Tour 以了解该站点的工作原理。
  • 你能分享一些代码吗?
  • 请给我们一些与崩溃有关的上下文或代码。

标签: ios objective-c xcode


【解决方案1】:

我认为您尝试删除文件,但您没有特定文件夹的权限。

[NSFileManager removeItemAtPath:error:] + 84

我们需要更多背景信息,因为我们会尽力帮助您。

【讨论】:

  • 我只会在主线程上调用 NSFilemanager 方法。但是我会在删除一个文件后取消归档保存的文件。看起来是这样的: [NSFileManager removeItemAtPath:error:]; [NSKeyedUnarchiver unarchiveObjectWithFile:];
  • 权限错误不会导致崩溃。 Filemanager 可以在多个线程中正常工作,只要您遵守规则(并且 OP 的崩溃在主线程上)。
猜你喜欢
  • 2019-02-22
  • 2016-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-20
  • 1970-01-01
相关资源
最近更新 更多