YouTubeサブスクリプションのビデオをクロールするiOSアプリを実行しています。3回目に次のビデオを見るためにナビゲートしたいときに問題が発生します。
これらについては、start-index(NSNumber * youtubeStart)を収集して、表示されるビデオの数(int const maxVideos)を追加する必要があります。
そのために、VideosViewController.hにあります
@interface VideosViewController : UIViewController {
NSNumber *youtubeStart;
}
@property (nonatomic, retain) NSNumber *youtubeStart;
次にVideosViewController.mで
@synthesize youtubeStart;
static int const maxVideos = 6;
そして、その方法
- (void) navigateVideos:(id)sender
{
int navigate = 0;
int start = [youtubeStart intValue];
if(sender == bt_prev)
{
if(start >= maxVideos)
{
start -= maxVideos;
navigate = 1;
}
}
if(sender == bt_next)
{
start += maxVideos;
navigate = 1;
}
if (navigate > 0)
{
youtubeStart = [NSNumber numberWithInt:start];
NSString *url = [NSString
stringWithFormat:@"%@&start-index=%i&max-results=%i"
, myUrl, [youtubeStart intValue], maxVideos];
[self LoadOAuthUrl:url];
}
}
ボタン「bt_prev」または「bt_next」の1つを「TouchUpInside」すると、「navigateVideos」と呼ばれます。bt_prevまたはbt_nextを何度でも押すことができ、機能しますが、bt_nextを3回続けて押すと、youtubeStartが範囲外になります。3ページ目以上は行けないようです。
それを処理する理由と方法を理解するのを手伝っていただけませんか。
私の他の合成変数は範囲外ではありません。
どうもありがとうございました。
編集:私はx-codeからipadシミュレーターでアプリケーションを実行します。アプリケーションはEXC_BAD_ACCESSエラーでクラッシュします。youtubeStartは、デバッガーで「int start =[youtubeStartintValue];」の直前に「スコープ外」になっているように見えます。それがクラッシュする理由です。正常に動作する場合、youtubeStartは範囲外ではありません。
編集2:スタックトレースは常に欠落しています。デバッガコンソールでこれを取得しました。
Program received signal: “EXC_BAD_ACCESS”.
そして、これは赤い矢印の付いたデバッガーで:
0x0134d0b0 <+0036> cmp ecx,DWORD PTR [eax]