Objective-C错误"'XYZPerson'没有可见的@interface'声明选择器'saySomething'

Raj*_*689 0 objective-c selector superclass

我是Objective-C的新手,当我练习书练习时,我真的被困在这里.请帮我解决这个问题,我一直在考虑什么可能导致这个错误超过三个小时.我仍然没有得到它!

最好的问候,Raj.

提前致谢 !

的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;
}
Run Code Online (Sandbox Code Playgroud)

XYZPerson.h

#import <Foundation/Foundation.h>
@interface XYZPerson : NSObject

@property NSString *firstName;
@property NSString *secondName;
@property NSDate *dob;

-(void) saySomething;
-(void) sayHello;

@end
Run Code Online (Sandbox Code Playgroud)

XYZPerson.m

#import "XYZPerson.h"
@implementation XYZPerson

-(void) sayHello {
    [self saySomething:@"Hello all"];
}

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

@end
Run Code Online (Sandbox Code Playgroud)

XYZShout.h

#import "XYZPerson.h"

@interface XYZShout : XYZPerson

// -(void) saySomething;

@end
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

搞定了!感谢@MatthewD,@ ryjanfoe,@ JFS为你的大帮助:)

tro*_*foe 6

看起来你正在测试继承,所以我假设它XYZShout应该来源于XYZPerson.如果是这样,请遵循@JFS中的建议,并确保它确实实际派生:

XYZShout.h:

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

@interface XYZShout : XYZPerson

- (void)saySomething:(NSString *)greet;

@end
Run Code Online (Sandbox Code Playgroud)

并且还纠正了saySomethingin XYZPerson(你错过了参数)的定义:

XYZPerson.h:

#import <Foundation/Foundation.h>
@interface XYZPerson : NSObject

@property NSString *firstName;
@property NSString *secondName;
@property NSDate *dob;

- (void)saySomething:(NSString *)greet;
//                   ^^^^^^^^^^^^^^^^^
- (void)sayHello;

@end
Run Code Online (Sandbox Code Playgroud)