“对于’BlahDataController’没有可见的@interface声明选择器’aMethod:’”

我的问题的一个简单例子:

“在BlahDataController.h中”

@接口BlahDataController:NSObject
-(NSString*)方法:(NSString*)字符串;
@结束

“在BlahDataController.m中”

导入“BlahDataController.h”
@BlahDataController的实现
-(NSString*)方法:(NSString*)字符串
{
返回”某物”,;
}
@结束

“在BobViewController.h中”

@interface-BobViewController:NSObject
-(无效)aMethodOfSomeSort;
@结束

“在BobViewController.m中”

导入“BobViewController.h”
#导入“BlahDataController.h”
@BobViewController的实现
-(无效)aMethodOfSomeSort
{
BlahDataController*BlahDataController=[[BlahDataController alloc]init];
NSLog(@“%@,[blahDataController方法:@“变量”);
}
@结束

在行“NSLog(@“%@,[blahDataController-aMethod:@“Variable”]”)上,“我收到错误:“blahDataController”没有可见的@接口声明选择器“aMethod:””

有人知道为什么会发生这种错误吗

-=-=-=-=-=-=-=-=-=-=-

问题是,在我的实际程序中,我有相同的实现,它可以很好地用于以这种方式创建的数百个方法。然而,每隔一段时间,我就会在一个新创建的方法上收到这个错误。我没有做出任何改变。它只是不承认它是新创造的存在

-=-=-=-=-=-=-=-=-=-=-

这就是我目前的做法,虽然我不知道编译器为什么接受这种方式,但不知道另一种方式:

修改BobViewController.m:

导入“BobViewController.h”
#导入“BlahDataController.h”
#导入“AnotherDataController.h”
@BobViewController的实现
-(无效)aMethodOfSomeSort
{
BlahDataController*BlahDataController=[[BlahDataController alloc]init];
AnotherDataController*AnotherDataController=[[AnotherDataController alloc]init];
[另一个DataController修复方法:blahDataController字符串:@“Variable”];
}
@结束

“在另一个DataController.h中”

@接口另一个数据控制器:NSObject
-(void)fixed方法:(BlahDataController*)BlahDataController字符串:(NSString*)字符串;
@结束

“在另一个DataController.m中”

导入“AnotherDataController.h”
#导入“BlahDataController.h”
@另一个数据控制器的实现
-(void)修复方法:(BlahDataController*)BlahDataController字符串:(NSString*)字符串
{
NSLog(@“%@,[blahDataController方法:字符串]);
}
@结束

而且…它工作得很好…所以我想xcode只是无法识别一个类中的方法,而在另一个类中却可以正常工作…伙计,我不知道为什么会发生这个错误

-=-=-

次要更新:
完成整个“xcode舞蹈”并没有解决问题
1) 清洁构建
2) 删除派生数据
3) 完全关闭XCode并重新打开

tl;博士-项目中的某个地方有一个重复的文件!去追捕它,无情地摧毁它

好,对于未来所有有这个问题的人,;这就是问题所在

几个月前我做了BlahDataController。大约一周前,我重组了项目的文件夹,并将BlahDataController从一个名为“Blah”的文件夹移动到另一个名为“Data”的文件夹

当我在“Data”文件夹中更改BlahDataController的代码时,我的一个类可以看到更改后的代码,但是另一个类看不到

最终的问题是,当我移动BlahDataController时,它实际上创建了它的一个副本。所以我在“Data”文件夹中有一个BlahDataController,在“Blah”文件夹中有一个旧的BlahDataController。即使旧的BlahDataController不再附加到项目管理器中的项目(xcode的左侧),物理文件仍然存在于文件夹中这一事实也导致了此问题

删除BlahDataController的旧副本后,问题得到解决

发表评论