我的问题的一个简单示例:
“在 BlahDataController.h 中”
@interface BlahDataController : NSObject
-(NSString *)aMethod:(NSString *)theString;
@end
“在 BlahDataController.m 中”
#import "BlahDataController.h"
@implementation BlahDataController
-(NSString *)aMethod:(NSString *)theString
{
return @"Something";
}
@end
“在 BobViewController.h 中”
@interface BobViewController : NSObject
-(void)aMethodOfSomeSort;
@end
“在 BobViewController.m 中”
#import "BobViewController.h"
#import "BlahDataController.h"
@implementation BobViewController
-(void)aMethodOfSomeSort
{
BlahDataController *blahDataController = [[BlahDataController alloc] init];
NSLog(@"%@",[blahDataController aMethod:@"Variable"]);
}
@end
在行上“NSLog(@"%@",[blahDataController aMethod:@"Variable"]);" 我收到错误消息:“'BlahDataController' 没有可见的@interface 声明选择器'aMethod:'”
有谁知道为什么会发生这个错误?
-=-=-=-=-=-=-=-=-=-=-
问题是,在我的实际程序中,我有相同的实现,并且它适用于以这种方式创建的数百种方法。但是,每隔一段时间,我就会在新创建的方法上收到此错误。我没有做任何不同的事情。它只是不会承认它是新创造的存在。
-=-=-=-=-=-=-=-=-=-=-
这就是我目前正在解决的问题,虽然我不知道为什么编译器接受这种方式,但不是其他方式:
修改 BobViewController.m:
#import "BobViewController.h"
#import "BlahDataController.h"
#import "AnotherDataController.h"
@implementation BobViewController
-(void)aMethodOfSomeSort
{
BlahDataController *blahDataController = [[BlahDataController alloc] init];
AnotherDataController *anotherDataController = [[AnotherDataController alloc] init];
[anotherDataController fixedMethod:blahDataController theString:@"Variable"];
}
@end
“在 AnotherDataController.h 中”
@interface AnotherDataController : NSObject
-(void)fixedMethod:(BlahDataController *)blahDataController theString:(NSString *)theString;
@end
“在另一个数据控制器.m 中”
#import "AnotherDataController.h"
#import "BlahDataController.h"
@implementation AnotherDataController
-(void)fixedMethod:(BlahDataController *)blahDataController theString:(NSString *)theString
{
NSLog(@"%@",[blahDataController aMethod:theString]);
}
@end
而且......它工作得很好......所以我想xcode只是无法识别一个类中的方法,并且在另一个类中正常工作......伙计,我不知道为什么会发生这个错误...... .
-=-=-
次要更新:
做整个“xcode dance”并没有解决问题
1)清理构建
2)删除派生数据
3)完全关闭 XCode 并重新打开