【发布时间】:2013-02-04 01:29:45
【问题描述】:
我对 Objective-C 非常陌生,当我练习书本练习时,我真的被困在这里。请帮我解决这个问题,我一直在思考可能导致此错误的原因超过三个小时。还是没看懂!
最好的问候, 拉吉。
提前致谢!
main.m
#import <Foundation/Foundation.h>
#import "XYZPerson.h"
#import "XYZShout.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
//XYZPerson *some = [[XYZPerson alloc]init];
XYZShout *some = [[XYZShout alloc]init];
[some sayHello];
// insert code here...
// NSLog(@"Hello, World!");
}
return 0;
}
XYZPerson.h
#import <Foundation/Foundation.h>
@interface XYZPerson : NSObject
@property NSString *firstName;
@property NSString *secondName;
@property NSDate *dob;
-(void) saySomething;
-(void) sayHello;
@end
XYZPerson.m
#import "XYZPerson.h"
@implementation XYZPerson
-(void) sayHello {
[self saySomething:@"Hello all"];
}
-(void) saySomething:(NSString *)greet {
NSLog(@"%@", greet);
}
@end
XYZShout.h
#import "XYZPerson.h"
@interface XYZShout : XYZPerson
// -(void) saySomething;
@end
XYZShout.m
#import "XYZShout.h"
@implementation XYZShout
-(void) saySomething:(NSString *)greet {
NSString *upperGreet = [greet uppercaseString];
[super saySomething:upperGreet]; // this is where I get the error mentioned above
}
@end
搞定了!感谢@MatthewD、@trojanfoe、@JFS 的大力帮助:)
【问题讨论】:
-
能否也包含 XYZShout.h 的代码?
-
如果将 XYZPerson.h 中的
- (void) saySomething;更改为- (void) saySomething:greet;会发生什么? -
添加了 XYZShout.h MatthewD
-
现在将尝试您的建议..
-
MatthewD... :) 它起作用了.. 现在我输入大写了 :) 为什么当我将其更改为 saySomething:greet 而不是 saySomething 时它会运行?由于 greet 仅与“saySomething”一起定义!
标签: objective-c selector superclass