在 Objective C 中调用方法时出现问题(Apple 文档示例)

Trouble with calling a method in Objective C (Apple Documentation example)

我正在关注 Apple 的 "Programming with Objective C" 文档,link 是:https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithObjects/WorkingwithObjects.html#//apple_ref/doc/uid/TP40011210-CH4-SW1

无论如何,我已经到了要求调用 sayHello 方法的地步。

"Create a new XYZPerson instance using alloc and init, and then call the sayHello method."

#import <Foundation/Foundation.h>
#import "XYZPerson.h"

int main(int argc, const char * argv[]);

XYZPerson *firstPerson = [[XYZPerson alloc] init]; //Initializer element is not a lime-time constant
[firstPerson sayHello]; //No Visible @interface for 'XYZPerson' delcares the selector 'sayHello'

@implementation XYZPerson
- (void)sayHello {
    [self saySomething:@"Hello, World"];
}

- (void)saySomething: (NSString *)greeting {
    NSLog(@"%@", greeting);
}

@end

我相信我对 apple 解释这项工作的方式有误解,或者根本不知道。

希望 apple 完成这些示例以供我们审查。

因为您只能访问在 .h 文件中使用 class 对象声明的 public 函数。

Kindly declare that function in .h file and it will solve your problem

您需要将代码放在主函数中。现在你的代码就在你的文件中,在任何函数之外。应该是:

int main(int argc, const char * argv[]) {
    XYZPerson *firstPerson = [[XYZPerson alloc] init];
    [firstPerson sayHello];
}

此外,根据文档,您应该有一个单独的 main.m 文件,其中包含您的 main 函数。