通過多個線程搜索但找不到答案。錯誤:'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