Bildiğim kadarıyla bir Web görünümü (örneğin gömülü görüntüden bir yanıt) bir güncelleme aldığında, o sinyal açıldı hatırlıyorum ama alışık değil çünkü render edilemedi olarak artık ana iş parçacığı tarafından. Bu, ViewController görüntülenmediğinde anlamına gelir.
Eğer durum buysa, sen/iterek başka kahpeden, ağır içerikli bir web sayfası yüklenirken (örneğin, http://edition.cnn.com/ gibi bazı online gazete) ve yükü çalıştıktan hemen sonra web görüntülemesini işten çıkararak sorunu yeniden mümkün olmalıdır ViewController. Bunu düzeltmek için nasıl
: gerçekten de, size söz yöntemleri çağırmak gerekir:
webview.delegate = nil;
[webview stopLoading];
Ancak bunu yapmak için yer asla dealloc
üzerine, viewWillDisappear
yönteme üzerindedir. Nedeni basit: viewWillDisappear
, ViewController'ın ana iş parçacığının denetimini kaybetmek üzere olduğu tam anı çağrılır. Ancak, VC yığına bırakılmak üzere olduğunda dealloc
çağrılır. Bu işlem birkaç saniye sonra gerçekleşebilir, uygulamaya kilitlenme için çok değerli bir zaman verebilir veya belki hiç çağrılmayabilir. Her iki yöntemi de hareket ettirmek, hile yapmalıdır.
hedeflediğiniz Ne iOS sürümü? Webview.delegate = nil' ve '[webview stopLoading]' yi nerede arıyorsun? – JAL
iOS7 + 'yı hedefliyorum. Muhtemelen sonraki sürüm 8+ olacak. delegate = nil dealloc olarak adlandırılır. stopLoading, viewWillDisappear'da çağrıldı. – Division
Oldukça eminim bu bir webkit iç hata (iOS 7'de görünen ama iOS 8 ile düzeltildi) Apple'ın resmi çözümünün "iOS 8'e yükseltmek" olduğu yer. Ayrıca 'webview.delegate = nil' ve '[webview stopLoading]' dediğiniz her yerde değiştirmeyi deneyebilirim, 'viewWillDisapear' veya 'dealloc' olarak adlandırmayı deneyin. – JAL