搜索了几个线程,但找不到答案。
我是 Objective-C 的新手,在 Apple 开发中通过简报并进行了实验并不断收到错误:“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
这是 main() 中的代码:
#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!
只是无法弄清楚为什么我可以在 main() 中调用 [aPerson sayHello] 和 [aPerson sayBooBoo] 但 [aPerson saySomething:@"Something."] 会导致问题。