1

我是 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];
    }

我真的很感谢有人在这方面的帮助,一直在努力理解这一点无济于事。

梅尔文

4

2 回答 2

3

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

@selector(logoutButtonClicked:)
                             ^

不是

@selector(logoutButtonClicked)
于 2012-05-13T07:16:55.020 回答
2

您似乎在另一个方法的中间定义了一个方法。你不能那样做。这些行:

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

必须出现在任何其他方法之外,而不是在其他方法的花括号 ( {... }) 内。

于 2012-05-13T07:48:19.140 回答