1

私は現在、Objective-C を第一言語として独学しています。大変さはわかりますが、私は物静かで根気のいる人間です。Apple Objective-C のドキュメントに関する演習を開始しました。私の目標は、一般的な Hello World の挨拶ではなく、自分の名前と姓をプログラムからログアウトさせることです。

Use of Undeclared identifier エラーが繰り返し発生します。エラーの原因を突き止めようとしています。

これがintroClass.hです

    #import <UIKit/UIKit.h>

    @interface XYZperson : NSObject

    @property NSString *firstName;
    @property NSString *lastName;
    @property NSDate *dateOfBirth;
    - (void)sayHello;
    - (void)saySomething:(NSString *)greeting;
    + (instancetype)person;
    -(int)xYZPointer;
    -(NSString *)fullName;
    @end

IntroClass.m はこちら

#import "IntroClass.h"

@implementation XYZperson
-(NSString *)fullName
{
    return[NSString stringWithFormat:@" %@ %@", self.firstName, self.lastName];
}

-(void)sayHello
{
    [self saySomething:@"Hello %@", fullName]; //use of undeclared identifier "fullName"
};

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

+(instancetype)person{
   return [[self alloc] init];
};

- (int)xYZPointer {
    int someInteger;
    if (someInteger != nil){
        NSLog(@"its alive");
    }
    return someInteger;
};


@end
4

3 に答える 3

2

問題はfullName、メソッドの名前です。self角括弧で呼び出す必要があります。

は単一のパラメーターを想定しているため、次のように、(1)呼び出しsaySomething:の一部を削除する必要があります。@"Hello %@"

-(void)sayHello {
    [self saySomething:[self fullName]];
};

@"Hello %@"またはとから単一の文字列を作成するには[self fullName]、次のようにします。

-(void)sayHello {
    [self saySomething:[NSString stringWithFormat:@"Hello %@", [self fullName]]];
};
于 2014-01-29T20:00:13.363 に答える
0

使用する

[self saySomething:@"Hello %@", self.fullName]];

また

[self saySomething:@"Hello %@", [self fullName]];
于 2014-01-29T20:07:15.297 に答える