Простой пример моей проблемы:
"Внутри 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 "]); Я получаю сообщение об ошибке:" Нет видимого @interface для "BlahDataController" объявляет селектор "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
"Внутри AnotherDataController.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 и снова открыть