编译时出错:没有可见的@interface声明选择器

时间:2014-07-28 17:40:52

标签: objective-c uiviewcontroller interface visibility

在一门课程中,我有以下内容 AlertEditorContainerViewController.m

    #import "AlertEditorContainerViewController.h"

    @interface AlertEditorContainerViewController ()
    -(void)swapViewControllers;
    @end

    @implementation AlertEditorContainerViewController

    @synthesize currentSegueIdentifier;
    @synthesize segIndex;

   - (void)swapViewControllers
   {
       self.currentSegueIdentifier = ([self.currentSegueIdentifier  isEqual: SegueIdentifierFirst]) ? SegueIdentifierSecond : SegueIdentifierFirst;
       [self performSegueWithIdentifier:self.currentSegueIdentifier sender:nil];
   }
    @end

我尝试称之为另一个班级 AlertEditorViewController.h

    @interface AlertEditorViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
    { 
          AlertEditorContainerViewController              *containerViewController;

     }

AlertEditorViewController.h        #import“AlertEditorViewController.h”

    @implementation AlertEditorViewController
    - (IBAction)segmentSwitchValueChanged:(id)sender
    {
          [containerViewController swapViewControllers];    
    }
    @end

这给出了错误“没有可见的@interface for AlertEditorContainerViewController声明选择器swapViewControllers'

我查了所有其他类似的查询,他们似乎都指向我在代码中找不到的错别字等。

1 个答案:

答案 0 :(得分:2)

-(void)swapViewControllers文件中声明AlertEditorContainerViewController.h,而不是.m文件。

有关此问题的信息,您需要查看this Stack Overflow question,但简而言之,通过在@interface文件中的.m块中声明方法,即可重新有效地使它成为一个私有方法(其他实现文件无法访问)。从链接:

  

实现文件中的接口部分允许您声明私有的变量,属性和方法,这意味着其他类不会看到它们。

编译器知道它在该特定文件的范围内,但其他文件无法访问,甚至无法将该方法视为已定义。