调试:无法看到如何调用函数

时间:2013-12-04 13:42:01

标签: ios objective-c xcode cocoa

编辑:当我跳转到“连接”函数的定义时,它会将我带到NSURLRequest标头。由于createLoginCheck中存在NSUrlRequest,因此“连接”肯定是代码中的实现。稍后再确认;)

我有一个iPhone应用程序需要改进。此应用程序连接到ipCamera并使用UIImageView显示视频流。这是为了这个概念。我的问题是我必须确保此应用程序适用于其他类型的相机。所以我试着理解代码是如何工作的,而且我不能再跟踪代码了。这对我来说似乎很神奇(我确切地说,我是Objective C的新手)。

它是如何发生的?我用登录表单连接到ipcam。当我点击登录按钮时,如果连接已建立,我到达显示视频流的视图(如果连接了ipcam但未管理视频流,我仍然连接到摄像头并显示视图,但有没有视频:它什么都不显示,因为该函数下载了一个空信息,但下载了它们。仅当我无法连接到ipcam时,才会显示显示视图,否则会显示错误消息并保留在登录视图中。

所以我在与登录按钮相关联的IBAction上设置了一个断点并且骚扰了“步入INTO”以查看我点击登录按钮后发生的事情。但调试器中发生的情况如下:完成IBAction的步骤和完成功能之后似乎访问框架方法,如

_UIApplicationHandleEvent
-[UIApplication sendEvent:]
-[UIWindow _sendTouchesForEvent:]
-[UIControl touchesEnded:withEvent:]
-[UIControl(internal) _sendActionsForEvents:withEvent:]
...

执行完所有操作后,程序会正常执行并转到显示视频的下一个视图。也许我的调试方法不是最佳的。这是我的代码:

在填写了IP和端口字段后,IBAction链接到登录按钮:

//IPCamera Login Button clicked
-(IBAction)IPCameraLoginClick:(id)sender //Breakpoint here
{   
    NSLog(@"IPCameraLoginClick");
    if(VPONAutoSave)
        [self saveVPONLoginInfo];
    [self createLoginCheck];
}//breakpoint stops here before loading the next view

我给方法createLoginCheck设置了断点,但它仍然在IPCameraLoginClick结束时停止。正常^^

-(void)createLoginCheck
{
    NSLog(@"createLoginCheck");
    bShowConnectionFail = YES;
    NSURLRequest *theRequest5;
    if(baseMode == VPONVIEW)
    {
        theRequest5=[NSURLRequest requestWithURL:[NSURL URLWithString:[[NSString alloc] initWithFormat:@"http://%@:%@/",VPONIP.text,VPONPort.text]]
                                     cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData
                                 timeoutInterval:10.0];

    }
    else
    {
        theRequest5=[NSURLRequest requestWithURL:[NSURL URLWithString:[[NSString alloc] initWithFormat:@"http://%@:%@/",IPCameraIP.text,IPCameraPort.text]]
                                     cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData
                                 timeoutInterval:10.0];
    }       

    theConnection5=[[NSURLConnection alloc] initWithRequest:theRequest5 delegate:self];
    if (theConnection5) 
    {
        NSLog(@"theConnection5");
    } 
    else 
    {       
        NSLog(@"no connect");
        [self createConnectionFail];
    }   
}

我回到数据的地方:

//===receive data from server===
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{    
    NSLog(@"Raw Datas : %@", data);

    if(connection == theConnection1)
    {
        [data getBytes:(void *)(buffer1+len1) length:[data length]];
        len1 += [data length];
    }
    else if(connection == theConnection2)
    {
        [data getBytes:(void *)(buffer2+len2) length:[data length]];
        len2 += [data length];
    }
        //Blablabla
    else if(connection == theConnection8)
    {
        NSLog(@"CONNECTION 8 ENGAGED ");
        [data getBytes:(void *)(buffer8+len8) length:[data length]];
        len8 += [data length];
        NSLog(@"Lenght 8 : %d", len8);
        //NSLog(@"Lenght 8 : %@", data);
    }

    NSLog(@"didReceiveData");   
}

简而言之,我想要做的是了解如何从IBAction的末尾传递到连接函数。我查看了代码,但无法找到调用函数的位置。我有4个班级(2 .m和2.h)。一个带有douzain行的appDelegate,以及程序中所有视图的控制器(大约2400行:/)。主要包含最多10行。所以也许这必须用.ib来处理,但我不太了解它是如何工作的。

0 个答案:

没有答案