【问题标题】:Undeclared Method Error Objective C IOS未声明的方法错误目标 C IOS
【发布时间】:2012-05-13 07:11:35
【问题描述】:

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

我非常感谢有人对此提供帮助,一直在努力试图理解这一点但无济于事。

梅尔文

【问题讨论】:

    标签: objective-c ios methods


    【解决方案1】:

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

    @selector(logoutButtonClicked:)
                                 ^
    

    不是

    @selector(logoutButtonClicked)
    

    【讨论】:

    • 这是正确的,但不对 OP 询问的错误负责。如果您将未实现/未定义/未声明的方法的选择器放在@selector() 中,编译器并不关心。直到运行时才会出现错误。
    • @KenThomases nope -- -Wundeclared-selector-Werror 会在编译时这样做。就位置而言:很好(您的答案+1)
    【解决方案2】:

    您似乎正在定义一个方法,正好在另一个方法的中间。你不能那样做。行:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-23
      • 1970-01-01
      • 1970-01-01
      • 2012-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多