从主线程访问后,不得从后台线程对>布局引擎进行修改

我刚刚为iPhone和新的Xcode下载了iOS 13。我想测试适用于iOS 13的应用程序,但是当我尝试运行应用程序时,几秒钟后会出现错误。错误:

由于未捕获的异常“

NSInternalInconsistencyException”而终止应用程序,原因:“从主线程访问布局引擎后,不得从后台线程对其进行修改。”

***第一掷调用堆栈:(0x191ea9c30 0x191bc40c8 0x192395434 0x19218eb94 0x19218eaa8

0x19218e718 0x1963e6ea8 0x191bbfaf0 0x198984384 0x19634fe54 0x19898468c

0x198997bf4 0x1988dd3e4 0x1989083a0 0x198909388 0x191bbc3c0 0x191bb4dbc

0x191bb6de8 0x191bb6b30 0x191bbcc78)的libc ++

abi.dylib:与类型NSException的未捕获的异常终止

在iOS 12及更低版本中,一切似乎都可以正常运行,而我不会收到此错误。有人知道如何解决此错误以及该错误的含义吗?

下载编号:

func Download_ID() {

let urlString = "https://www.instagram.com/\(self.username_String)/?__a=1"

guard let url = URL(string: urlString) else { return }

URLSession.shared.dataTask(with: url) { data, urlResponse, error in

guard let data = data, error == nil, urlResponse != nil else {

print(error)

return

}

do

{

let decoder = JSONDecoder()

let downloadedData_user = try decoder.decode(Website.self, from: data)

DispatchQueue.main.async {

self.profile_img_String = downloadedData_user.graphql.user.profile_pic_url

let Veri = downloadedData_user.graphql.user.is_verified

if Veri == true {

self.Verified!.isHidden = false

}else{

self.Verified!.isHidden = true

}

self.Name!.text = downloadedData_user.graphql.user.full_name

self.username!.text = self.username_String

let url = URL(string: "\(self.profile_img_String)")

self.profileImage!.kf.indicatorType = .activity

self.profileImage!.kf.setImage(

with: url,

placeholder: UIImage(named: "image-placeholder.png"),

options: [

.scaleFactor(UIScreen.main.scale),

.transition(.fade(0.4)),

.cacheOriginalImage

])

}

} catch {

print(error)

}

}.resume()

}

堆栈:

Main Thread Checker: UI API called on a background thread: -[UIView setHidden:]

PID: 4437, TID: 1560742, Thread name: (none), Queue name: NSOperationQueue 0x10440d330 (QOS: UNSPECIFIED), QoS: 0

Backtrace:

4 Instagram Profile 0x00000001029c09bc $s17Instagram_Profile21History_TableViewCellC11Download_IDyyFyycfU_y10Foundation4DataVSg_So13NSURLResponseCSgs5Error_pSgtcfU_ + 1612

5 Instagram Profile 0x00000001029c10d4 $s10Foundation4DataVSgSo13NSURLResponseCSgs5Error_pSgIegggg_So6NSDataCSgAGSo7NSErrorCSgIeyByyy_TR + 284

6 CFNetwork 0x0000000195105ffc CFNetServiceBrowserSearchForServices + 95540

7 CFNetwork 0x00000001951168dc _CFHTTPMessageSetResponseProxyURL + 7680

8 Foundation 0x0000000192279c60 A99BF5C7-12EA-3700-8798-6522387A8A89 + 1170528

9 Foundation 0x000000019217b7e8 A99BF5C7-12EA-3700-8798-6522387A8A89 + 129000

10 Foundation 0x000000019227bfbc A99BF5C7-12EA-3700-8798-6522387A8A89 + 1179580

11 Foundation 0x000000019217b464 A99BF5C7-12EA-3700-8798-6522387A8A89 + 128100

12 Foundation 0x000000019227c9e8 A99BF5C7-12EA-3700-8798-6522387A8A89 + 1182184

13 Foundation 0x000000019227c4a8 A99BF5C7-12EA-3700-8798-6522387A8A89 + 1180840

14 libdispatch.dylib 0x00000001042bda48 _dispatch_block_async_invoke2 + 144

15 libdispatch.dylib 0x00000001042af2a8 _dispatch_client_callout + 20

16 libdispatch.dylib 0x00000001042b2084 _dispatch_continuation_pop + 572

17 libdispatch.dylib 0x00000001042b1468 _dispatch_async_redirect_invoke + 628

18 libdispatch.dylib 0x00000001042c0aac _dispatch_root_queue_drain + 356

19 libdispatch.dylib 0x00000001042c1418 _dispatch_worker_thread2 + 144

20 libsystem_pthread.dylib 0x0000000191bb6a60 _pthread_wqthread + 216

21 libsystem_pthread.dylib 0x0000000191bbcc78 start_wqthread + 8

2019-09-24 23:21:24.917645+0200 Instagram Profile[4437:1560742] [reports] Main Thread Checker: UI API called on a background thread: -[UIView setHidden:]

PID: 4437, TID: 1560742, Thread name: (none), Queue name: NSOperationQueue 0x10440d330 (QOS: UNSPECIFIED), QoS: 0

Backtrace:

4 Instagram Profile 0x00000001029c09bc $s17Instagram_Profile21History_TableViewCellC11Download_IDyyFyycfU_y10Foundation4DataVSg_So13NSURLResponseCSgs5Error_pSgtcfU_ + 1612

5 Instagram Profile 0x00000001029c10d4 $s10Foundation4DataVSgSo13NSURLResponseCSgs5Error_pSgIegggg_So6NSDataCSgAGSo7NSErrorCSgIeyByyy_TR + 284

6 CFNetwork 0x0000000195105ffc CFNetServiceBrowserSearchForServices + 95540

7 CFNetwork 0x00000001951168dc _CFHTTPMessageSetResponseProxyURL + 7680

8 Foundation 0x0000000192279c60 A99BF5C7-12EA-3700-8798-6522387A8A89 + 1170528

9 Foundation 0x000000019217b7e8 A99BF5C7-12EA-3700-8798-6522387A8A89 + 129000

10 Foundation 0x000000019227bfbc A99BF5C7-12EA-3700-8798-6522387A8A89 + 1179580

11 Foundation 0x000000019217b464 A99BF5C7-12EA-3700-8798-6522387A8A89 + 128100

12 Foundation 0x000000019227c9e8 A99BF5C7-12EA-3700-8798-6522387A8A89 + 1182184

13 Foundation 0x000000019227c4a8 A99BF5C7-12EA-3700-8798-6522387A8A89 + 1180840

14 libdispatch.dylib 0x00000001042bda48 _dispatch_block_async_invoke2 + 144

15 libdispatch.dylib 0x00000001042af2a8 _dispatch_client_callout + 20

16 libdispatch.dylib 0x00000001042b2084 _dispatch_continuation_pop + 572

17 libdispatch.dylib 0x00000001042b1468 _dispatch_async_redirect_invoke + 628

18 libdispatch.dylib 0x00000001042c0aac _dispatch_root_queue_drain + 356

19 libdispatch.dylib 0x00000001042c1418 _dispatch_worker_thread2 + 144

20 libsystem_pthread.dylib 0x0000000191bb6a60 _pthread_wqthread + 216

21 libsystem_pthread.dylib 0x0000000191bbcc78 start_wqthread + 8

2019-09-24 23:21:25.431565+0200 Instagram Profile[4437:1560883] WF: _userSettingsForUser mobile: {

filterBlacklist = (

);

filterWhitelist = (

);

restrictWeb = 1;

useContentFilter = 0;

useContentFilterOverrides = 0;

whitelistEnabled = 0;

}

2019-09-24 23:21:25.431612+0200 Instagram Profile[4437:1560883] WF: _WebFilterIsActive returning: NO

2019-09-24 23:21:26.084697+0200 Instagram Profile[4437:1560883] WF: _userSettingsForUser mobile: {

filterBlacklist = (

);

filterWhitelist = (

);

restrictWeb = 1;

useContentFilter = 0;

useContentFilterOverrides = 0;

whitelistEnabled = 0;

}

2019-09-24 23:21:26.084745+0200 Instagram Profile[4437:1560883] WF: _WebFilterIsActive returning: NO

2019-09-24 23:21:26.150637+0200 Instagram Profile[4437:1560979] NSURLConnection ordering violation: didFinishLoading to be scheduled before didReceiveResponse

2019-09-24 23:21:30.905067+0200 Instagram Profile[4437:1560742] This application is modifying the autolayout engine from a background thread after the engine was accessed from the main thread. This can lead to engine corruption and weird crashes.

Stack:(

0 Foundation 0x00000001923953a4 A99BF5C7-12EA-3700-8798-6522387A8A89 + 2331556

1 Foundation 0x000000019218eb94 A99BF5C7-12EA-3700-8798-6522387A8A89 + 207764

2 Foundation 0x000000019218eaa8 A99BF5C7-12EA-3700-8798-6522387A8A89 + 207528

3 Foundation 0x000000019218e718 A99BF5C7-12EA-3700-8798-6522387A8A89 + 206616

4 UIKitCore 0x00000001963e6ea8 EBED47E6-6BB2-3119-82CE-CC13EDCA02D6 + 15568552

5 libobjc.A.dylib 0x0000000191bbfaf0 10328337-A06E-370F-8958-6EDDA1F434DC + 6896

6 QuartzCore 0x0000000198984384 18D85F6F-635D-3A6F-BF7D-898A644FDCF5 + 1393540

7 UIKitCore 0x000000019634fe54 EBED47E6-6BB2-3119-82CE-CC13EDCA02D6 + 14949972

8 QuartzCore 0x000000019898468c 18D85F6F-635D-3A6F-BF7D-898A644FDCF5 + 1394316

9 QuartzCore 0x0000000198997bf4 18D85F6F-635D-3A6F-BF7D-898A644FDCF5 + 1473524

10 QuartzCore 0x00000001988dd3e4 18D85F6F-635D-3A6F-BF7D-898A644FDCF5 + 709604

11 QuartzCore 0x00000001989083a0 18D85F6F-635D-3A6F-BF7D-898A644FDCF5 + 885664

12 QuartzCore 0x0000000198909388 18D85F6F-635D-3A6F-BF7D-898A644FDCF5 + 889736

13 libsystem_pthread.dylib 0x0000000191bbc3c0 FEB52688-4D65-3D38-AD50-01B128A74208 + 37824

14 libsystem_pthread.dylib 0x0000000191bb4dbc FEB52688-4D65-3D38-AD50-01B128A74208 + 7612

15 libsystem_pthread.dylib 0x0000000191bb6de8 FEB52688-4D65-3D38-AD50-01B128A74208 + 15848

16 libsystem_pthread.dylib 0x0000000191bb6b30 _pthread_wqthread + 424

17 libsystem_pthread.dylib 0x0000000191bbcc78 start_wqthread + 8

)

2019-09-24 23:21:30.927369+0200 Instagram Profile[4437:1560742] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Modifications to the layout engine must not be performed from a background thread after it has been accessed from the main thread.'

*** First throw call stack:

(0x191ea9c30 0x191bc40c8 0x192395434 0x19218eb94 0x19218eaa8 0x19218e718 0x1963e6ea8 0x191bbfaf0 0x198984384 0x19634fe54 0x19898468c 0x198997bf4 0x1988dd3e4 0x1989083a0 0x198909388 0x191bbc3c0 0x191bb4dbc 0x191bb6de8 0x191bb6b30 0x191bbcc78)

libc++abi.dylib: terminating with uncaught exception of type NSException

回答:

您的网络提取代码几乎是正确的-您正在重新加载主队列中的表,但未停止活动指示器。

您只需要在闭包内部移动该行:

let downloadedData_user = try decoder.decode(Top_us.self, from: data)

self.Top_Search = downloadedData_user.users

DispatchQueue.main.async {

self.tableView.reloadData()

self.Indicator.stopAnimating()

}

请注意,按照惯例,属性应以小写字母开头,而类应以大写字母开头。两者都应使用camelCase,所以Top_Search应该是topSearchTop_us应该是TopUsersIndicator应该是indicator

以上是 从主线程访问后,不得从后台线程对>布局引擎进行修改 的全部内容, 来源链接: utcz.com/qa/421004.html

回到顶部