通过多个线程搜索但找不到答案。错误:'XYZPerson'没有可见的@interface声明选择器'saySomething'
我是新来的Objective-C和苹果的发展经过简短准备和尝试,并不断收到错误:“XYZPerson”不可见@interface声明选择“saySomething”
控制台程序有一个添加类叫做 XYZPerson。下面是h和.m文件:
这是XYZPerson.h文件:
#import <Foundation/Foundation.h>
@interface XYZPerson : NSObject
@property (readonly) NSString *firstName;
@property (readonly) NSString *lastName;
@property (readonly) NSDate *dateOfBirth;
- (void)sayHello;
- (void)sayBooBoo;
- (void)saySomething;
+ (id)person;
@end
这是XYZPerson.m文件:
#import "XYZPerson.h"
@implementation XYZPerson
- (void)sayHello
{
[self saySomething:@"Say Hello, World!"];
}
- (void)sayBooBoo
{
[self saySomething:@"Say BooBoo, World!"];
}
- (void)saySomething:(NSString *)greeting
{
NSLog(@"%@", greeting);
}
@end
这里是主代码():
#import <Foundation/Foundation.h>
#import "XYZPerson.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World from Main!");
XYZPerson *aPerson = [[XYZPerson alloc] init];
[aPerson sayHello];
[aPerson sayBooBoo];
[aPerson saySomething:@"Something"];
}
return 0;
}
这会导致构建失败。如果我删除main()中的行“[aPerson saySomething:@”Something“];”
程序将与下面的输出运行:
013-05-14 15:38:04.102 XYZPerson[2303:303] Hello, World from Main!
2013-05-14 15:38:04.105 XYZPerson[2303:303] Say Hello, World!
2013-05-14 15:38:04.106 XYZPerson[2303:303] Say BooBoo, World!
只是想不通,为什么我可以调用[aPerson的sayHello]和[aPerson sayBooBoo]在main(),但[aPerson saySomething:@ “某事”。]导致问题。
啊geez!谢谢!我想我被抛弃了,因为“sayHello”和“sayBooBoo”对“saySomething”的调用工作正常。不知道为什么。也许是因为“saySomething”在实现本身中是完全定义的。也许是外部实体“main()”抛出错误的原因,因为它“saySomething”在XPZPerson头文件中没有完全定义。 – mikehoover