Hig*_*ule 32 xcode objective-c ipad
我的问题的一个简单例子:
"在BlahDataController.h中"
@interface BlahDataController : NSObject
-(NSString *)aMethod:(NSString *)theString;
@end
Run Code Online (Sandbox Code Playgroud)
"在BlahDataController.m中"
#import "BlahDataController.h"
@implementation BlahDataController
-(NSString *)aMethod:(NSString *)theString
{
return @"Something";
}
@end
Run Code Online (Sandbox Code Playgroud)
"在BobViewController.h中"
@interface BobViewController : NSObject
-(void)aMethodOfSomeSort;
@end
Run Code Online (Sandbox Code Playgroud)
"在BobViewController.m中"
#import "BobViewController.h"
#import "BlahDataController.h"
@implementation BobViewController
-(void)aMethodOfSomeSort
{
BlahDataController *blahDataController = [[BlahDataController alloc] init];
NSLog(@"%@",[blahDataController aMethod:@"Variable"]);
}
@end
Run Code Online (Sandbox Code Playgroud)
在"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
Run Code Online (Sandbox Code Playgroud)
"在AnotherDataController.h中"
@interface AnotherDataController : NSObject
-(void)fixedMethod:(BlahDataController *)blahDataController theString:(NSString *)theString;
@end
Run Code Online (Sandbox Code Playgroud)
"在AnotherDataController.m中"
#import "AnotherDataController.h"
#import "BlahDataController.h"
@implementation AnotherDataController
-(void)fixedMethod:(BlahDataController *)blahDataController theString:(NSString *)theString
{
NSLog(@"%@",[blahDataController aMethod:theString]);
}
@end
Run Code Online (Sandbox Code Playgroud)
并且....它工作得很好......所以我想xcode只是无法识别一个类中的方法,并且应该在另一个类中工作......伙计,我不知道为什么会出现这个错误.. .
- = - = -
次要更新:
完成整个"xcode舞蹈"没有解决问题
1)清理构建
2)删除派生数据
3)完全关闭XCode并重新打开
Hig*_*ule 57
tl; dr - 在项目的某个地方有一个重复的文件!去追捕它并毫不留情地摧毁它!
好的,对于将来这个问题的所有人; 这就是问题所在.
我几个月前制作了BlahDataController.大约一周前,我重新构建了项目的文件夹,并将BlahDataController从名为"Blah"的文件夹移动到另一个名为"Data"的文件夹.
当我在"Data"文件夹中更改BlahDataController的代码时,我的一个类可以看到更改的代码,但是,另一个类不能.
最后出现问题的是,当我移动BlahDataController时,它实际上创建了它的副本.所以我在"Data"文件夹中有一个BlahDataController,在"Blah"文件夹中有一个旧的BlahDataController.即使旧的BlahDataController不再附加到项目管理器中的项目(xcode的左侧),物理文件仍然存在于文件夹中的事实导致了这个问题.
删除BlahDataController的重复较旧副本后,问题已解决.
归档时间: |
|
查看次数: |
56694 次 |
最近记录: |