{"action":"created","issue":{"url":"https://api.github.com/repos/facebook/AsyncDisplayKit/issues/303","labels_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/issues/303/labels{/name}","comments_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/issues/303/comments","events_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/issues/303/events","html_url":"https://github.com/facebook/AsyncDisplayKit/pull/303","id":57113893,"number":303,"title":"Move ASTableView & ASCollectionView data fetching to background thread","user":{"login":"tanliboy","id":874968,"avatar_url":"https://avatars.githubusercontent.com/u/874968?v=3","gravatar_id":"","url":"https://api.github.com/users/tanliboy","html_url":"https://github.com/tanliboy","followers_url":"https://api.github.com/users/tanliboy/followers","following_url":"https://api.github.com/users/tanliboy/following{/other_user}","gists_url":"https://api.github.com/users/tanliboy/gists{/gist_id}","starred_url":"https://api.github.com/users/tanliboy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tanliboy/subscriptions","organizations_url":"https://api.github.com/users/tanliboy/orgs","repos_url":"https://api.github.com/users/tanliboy/repos","events_url":"https://api.github.com/users/tanliboy/events{/privacy}","received_events_url":"https://api.github.com/users/tanliboy/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":5,"created_at":"2015-02-10T00:45:21Z","updated_at":"2015-02-12T17:44:12Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/facebook/AsyncDisplayKit/pulls/303","html_url":"https://github.com/facebook/AsyncDisplayKit/pull/303","diff_url":"https://github.com/facebook/AsyncDisplayKit/pull/303.diff","patch_url":"https://github.com/facebook/AsyncDisplayKit/pull/303.patch"},"body":"Add \"collectionViewLockDataSourceForDataUpdating\" and \"collectionViewUnlockDataSourceForDataUpdating\" for enable data fetching from background thread. "},"comment":{"url":"https://api.github.com/repos/facebook/AsyncDisplayKit/issues/comments/74116530","html_url":"https://github.com/facebook/AsyncDisplayKit/pull/303#issuecomment-74116530","issue_url":"https://api.github.com/repos/facebook/AsyncDisplayKit/issues/303","id":74116530,"user":{"login":"phatmann","id":36146,"avatar_url":"https://avatars.githubusercontent.com/u/36146?v=3","gravatar_id":"","url":"https://api.github.com/users/phatmann","html_url":"https://github.com/phatmann","followers_url":"https://api.github.com/users/phatmann/followers","following_url":"https://api.github.com/users/phatmann/following{/other_user}","gists_url":"https://api.github.com/users/phatmann/gists{/gist_id}","starred_url":"https://api.github.com/users/phatmann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phatmann/subscriptions","organizations_url":"https://api.github.com/users/phatmann/orgs","repos_url":"https://api.github.com/users/phatmann/repos","events_url":"https://api.github.com/users/phatmann/events{/privacy}","received_events_url":"https://api.github.com/users/phatmann/received_events","type":"User","site_admin":false},"created_at":"2015-02-12T17:44:12Z","updated_at":"2015-02-12T17:44:12Z","body":"I just did some profiling on my iPhone 5S. Over 70% of the load time is spent in ASDisplayNode's `measure`. My tap on the close button is recognized immediately, so the UI is responsive during this load time, which is expected since the measuring takes place on a background thread. However, there is a delay of several seconds between the tap and when the node is removed from the table. After all the measuring is done, subsequent taps remove the node immediately, so the measuring is what is causing the delay. My node has a fairly simple layout; more complex nodes would have even more delay.\r\n\r\nSo the issue is that visible nodes cannot be removed until _all_ nodes are measured. Should I file a new issue for this?\r\n\r\nAnd back to #288 again: if we cannot solve the issue with the measuring cycle blocking node removal, I would like a way to know that all the nodes have been measured, so I can accommodate removal delays in the UI; e.g. show an activity indicator during the slow removal."}}