我正在做一个 iOS 应用程序来抓取我的 youtube 订阅的视频。当我想在第三次浏览下一个视频时遇到问题。
对于这些,我需要收集开始索引(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];
}
}
当我“TouchUpInside”按钮“bt_prev”或“bt_next”之一时,它调用“navigateVideos”。我可以根据需要多次按 bt_prev 或 bt_next 并且它可以工作,但是如果我连续按 bt_next 3 次,则 youtubeStart 超出范围。它似乎无法超越第三页。
你能帮我理解为什么以及如何处理它。
我的其他合成变量没有超出范围。
非常感谢你的帮助。
编辑:我从 x-code 在 ipad 模拟器上运行应用程序。应用程序会因 EXC_BAD_ACCESS 错误而崩溃。youtubeStart 在“int start = [youtubeStart intValue];”之前的调试器中似乎“超出范围” 这就是它崩溃的原因。当它工作正常时, youtubeStart 不会超出范围。
编辑 2:堆栈跟踪总是丢失。我刚刚在调试器控制台中得到了这个:
Program received signal: “EXC_BAD_ACCESS”.
这在调试器中带有红色箭头:
0x0134d0b0 <+0036> cmp ecx,DWORD PTR [eax]