Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 未声明的方法错误目标C IOS_Objective C_Ios_Methods - Fatal编程技术网

Objective c 未声明的方法错误目标C IOS

Objective c 未声明的方法错误目标C IOS,objective-c,ios,methods,Objective C,Ios,Methods,我是Obejctive C的新手,如果这是一个简单的问题,请原谅我。我正试图从Facebook IOS集成教程中获取以下代码,但我在这一行遇到了一个错误 - (void) logoutButtonClicked:(id)sender { [facebook logout]; 我得到了错误 使用未声明的标识符logoutButtonClicked。我知道这意味着我正在实现一个未定义的方法。所以我的问题是,下面代码中定义的方法在哪里 我已经看到一个解决方案张贴在这里,但它不适合我,这个错误

我是Obejctive C的新手,如果这是一个简单的问题,请原谅我。我正试图从Facebook IOS集成教程中获取以下代码,但我在这一行遇到了一个错误

- (void) logoutButtonClicked:(id)sender {
    [facebook logout];
我得到了错误

使用未声明的标识符logoutButtonClicked。我知道这意味着我正在实现一个未定义的方法。所以我的问题是,下面代码中定义的方法在哪里

我已经看到一个解决方案张贴在这里,但它不适合我,这个错误仍然存在。 我已经尝试了其他方法来尝试和修复,但是请有人确认这段代码在做什么

我的理解是,我们开始创建指向UIButton的logoutButton指针,然后设置它的参数。 然后,我们使用选择器为UIControlEventTouchInside方法定义操作消息LogoutButtonClicked

我不完全理解该方法是如何声明的,因为我认为这里的行定义了实例方法:

-(void) logoutButtonClicked:(id)sender {
        [facebook logout];
或者该方法是在中声明的

[logoutButton addTarget:self action:@selector(logoutButtonClicked)
           forControlEvents:UIControlEventTouchUpInside];

// Add the logout button
    UIButton *logoutButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    logoutButton.frame = CGRectMake(40, 40, 200, 40);
    [logoutButton setTitle:@"Log Out" forState:UIControlStateNormal];
    [logoutButton addTarget:self action:@selector(logoutButtonClicked)
           forControlEvents:UIControlEventTouchUpInside];
    [self.viewController.view addSubview:logoutButton];
    // Method that gets called when the logout button is pressed
    - (void) logoutButtonClicked:(id)sender {
        [facebook logout];
    }
我真的很感激有人在这方面提供帮助,我一直在努力理解这一点,但毫无结果


Melvin

冒号是选择器名称的一部分:

@selector(logoutButtonClicked:)
                             ^
不是


冒号是选择器名称的一部分:

@selector(logoutButtonClicked:)
                             ^
不是


您似乎在另一个方法的中间定义一个方法右击。你不能那样做。台词:

- (void) logoutButtonClicked:(id)sender {
    [facebook logout];
}

必须出现在任何其他方法之外,而不是在另一个方法的卷曲括号{…}中。

您似乎在另一个方法的中间定义一个方法右击。你不能那样做。台词:

- (void) logoutButtonClicked:(id)sender {
    [facebook logout];
}

必须出现在任何其他方法之外,而不是另一个方法的大括号{…}内。

这是正确的,但不对OP询问的错误负责。编译器不关心是否将未实现/未定义/未声明方法的选择器放入@selector中。直到运行时才出现错误。@kenthomass nope--未声明的选择器和-Werror将在编译时执行此操作。就位置而言:你的回答中的good catch+1这是正确的,但对OP询问的错误不负责任。编译器不关心是否将未实现/未定义/未声明方法的选择器放入@selector中。直到运行时才出现错误。@kenthomass nope--未声明的选择器和-Werror将在编译时执行此操作。至于位置:回答正确+1