2015-02-10 32 views
0

我与苹果的“编程使用目标C”的文件进行操作,请链接存在:https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithObjects/WorkingwithObjects.html#//apple_ref/doc/uid/TP40011210-CH4-SW1麻烦与目标C调用一个方法(苹果的文档和示例)

不管怎么说,我已经得到的地步它要求调用sayHello方法。

“使用alloc和init创建一个新的XYZPerson实例,然后调用sayHello方法。”

#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 

我相信我在与苹果是如何解释的工作,或者只是不知道一个误区。

许愿苹果已经完成了这些例子供我们审查。

+0

你是否实现了XYSperson.h和.m他们所说的方式? – 2015-02-10 04:29:55

+0

您的'XYZPerson.m'应该*不*具有'main'的声明。摆脱那条线。另外,为什么你在'@ implementation'行之前有代码?该代码不能在那里。 – rmaddy 2015-02-10 04:35:05

+0

这段代码位于main.m文件中,而我也有最后一章的XYZPerson.h和XYZPerson.m文件,为什么不好之前呢?该示例要求我使用main.m文件中的allocate和init创建一个实例。除非我做错了吗? – sophisticatedRock 2015-02-10 04:50:58

回答

0

你需要把代码的主函数中。现在,您只需将代码放在您的文件中,而不是任何函数。它应该是:

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

此外,根据文档,你应该有一个单独的文件main.m有它内部的main功能。

+0

尽管答案中的所有内容都是很好的信息,但实际上并没有解决问题的实际问题,即该方法需要在'XYZPerson'的.h文件中声明。 – rmaddy 2015-02-10 04:36:16

+0

最初在界面中声明它没有摆脱错误,但打开函数,谢谢。如果这就是你所说的话,所有这些代码都在main.m文件中。 – sophisticatedRock 2015-02-10 04:41:17

0

由于您只能访问使用类对象在.h文件中声明的公共函数。

请声明函数的.h文件,它会解决你的问题