A simple example of my problem:
"Within the BlahDataController.h"
@interface BlahDataController : NSObject
-(NSString *)aMethod:(NSString *)theString;
@end
"Within the BlahDataController.m"
#import "BlahDataController.h"
@implementation BlahDataController
-(NSString *)aMethod:(NSString *)theString
{
return @"Something";
}
@end
"Within BobViewController.h"
@interface BobViewController : NSObject
-(void)aMethodOfSomeSort;
@end
"Within BobViewController.m"
#import "BobViewController.h"
#import "BlahDataController.h"
@implementation BobViewController
-(void)aMethodOfSomeSort
{
BlahDataController *blahDataController = [[BlahDataController alloc] init];
NSLog(@"%@",[blahDataController aMethod:@"Variable"]);
}
@end
On the line "NSLog(@"%@",[blahDataController aMethod:@"Variable"]);" I'm receiving the error: "No visible @interface for 'BlahDataController' declares the selector 'aMethod:'"
Anyone know why this error is occurring?
-=-=-=-=-=-=-=-=-=-=-
The thing is, in my actual program, I have this same implementation and it works fine for hundreds of methods created this way. However, every so often, I'll receive this error on a newly created method. I didn't make it any differently. It just won't recognize it's newly created existence.
-=-=-=-=-=-=-=-=-=-=-
This is how I'm currently going around it, although I have no idea why the compiler accepts this way, but not the other:
Modify 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
"Within the AnotherDataController.h"
@interface AnotherDataController : NSObject
-(void)fixedMethod:(BlahDataController *)blahDataController theString:(NSString *)theString;
@end
"Within the AnotherDataController.m"
#import "AnotherDataController.h"
#import "BlahDataController.h"
@implementation AnotherDataController
-(void)fixedMethod:(BlahDataController *)blahDataController theString:(NSString *)theString
{
NSLog(@"%@",[blahDataController aMethod:theString]);
}
@end
And....it works just fine...So I imagine xcode is just failing to recognize the method in one class, and working as it should in another...Man, I have no idea why this error is occurring...
-=-=-
Minor Update:
Doing the entire "xcode dance" didn't solve the issue
1) Clean Build
2) Delete Derived Data
3) Completely Close XCode and reopen
See Question&Answers more detail:
os