Jestem nowy w stosunku do celu C, pochodzącego z tła .NET i java.Tworzenie widoku na wątku tła, dodając go do głównego widoku głównego wątku.
Więc muszę utworzyć kilka UIwebviews asynchronicznie, robię to na moim własnym kolejce wykorzystaniem
dispatch_queue_t queue = dispatch_queue_create("myqueue", NULL);
dispatch_async(queue, ^{
// create UIwebview, other things too
[self.view addSubview:webView];
});
jak owuld sobie wyobrazić to zgłasza błąd:
bool _WebTryThreadLock(bool), 0xa1b8d70: Tried to obtain the web lock from a thread other
than the main thread or the web thread. This may be a result of calling to UIKit from a
secondary thread. Crashing now...
Więc jak mogę dodać Wywiad na głównym wątku?
uwaga, nawet initWithFrame nie gwarantuje bezpieczeństwa wątku. zobacz http://stackoverflow.com/questions/11122957/is-it-ok-to-create-a-uiview-on-a-background-thread – stefreak
Może moje zrozumienie "wątku bezpiecznego" jest złe. Ale myślę, że bezpieczne dla wątków oznacza, że obiekt może być manipulowany z kilku wątków jednocześnie. Na przykład. można by pomyśleć o macierzy bezpiecznej dla wątków, która pozwalałaby dodawać obiekty z wielu wątków. Jednak w tym przypadku nie manipulujemy ani nie uzyskujemy dostępu do obiektu widoku z wielu wątków/kolejek jednocześnie. Tworzymy go w jednym wątku/kolejce, a następnie przekazujemy go do innego. – Florian
Okazuje się, że odpowiedź na pytanie, które łączyłem, była myląca - przepraszam. Apple mówi: "Jedyny czas, który może nie być absolutnie konieczny, to tworzenie samego obiektu widoku", więc powinno być bezpieczne. – stefreak