ビデオタイトルと日付などのYouTubeデータを表示するUITableView
があります。また、UITableViewCell
ごとにUIWebView
(75x75px)が表示され、HTML文字列が読み込まれます。UIWebViewブロッキングスレッドを使用しているYouTube UITableViewセル
UIWebView *iconView = (UIWebView*)[cell.contentView viewWithTag:2];
[self embedYouTube:videoUrl frame:CGRectMake(0, 0, 75, 75) webView:iconView];
とembedYouTube
機能::
I LO:
- (void)embedYouTube:(NSString*)url frame:(CGRect)frame webView:(UIWebView*)webView {
if([loadedIconsArray containsObject:webView])
return;
NSString *youTubeVideoHTML = @"<html><head>\
<body style=\"margin:0\">\
<embed id=\"yt\" src=\"%@\" type=\"application/x-shockwave-flash\" \
width=\"%0.0f\" height=\"%0.0f\"></embed>\
</body></html>";
NSString *html = [NSString stringWithFormat:youTubeVideoHTML, url, frame.size.width, frame.size.height];
[webView loadHTMLString:html baseURL:nil];
[loadedIconsArray addObject:webView];
}
loadedIconsArray
がNSMutableArray
問題であり、ここで
は- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
のための適切なコードです私のYouTubeビューでは、これらのオブジェクトがHTMLを読み込んでいる間にメインスレッドがブロックされているようです。数秒後にすべてが期待どおりに機能しています。私はこの遅れが最初にアプリケーションをインストールした後にのみ発生することに気付きます。他のすべてのアプリケーション/ビューの起動はうまく動作します。
なぜこの「遅延」またはスレッドブロックが発生していますか?
どうすればよいですか?
..私はきちんとウル質問を理解しているし、これはuの少しを助けることができる願っています。 –
コードが同期呼び出しを実行していません。右。しかし、私は内部オブジェクトが同期して読み込まれると思います。 もちろんこれがチェックされます。 UIWebViewデリゲートを使用してロードが開始されているかどうかを調べることができます。 –