0

他の投稿を見たことがありますが、彼らが何について話しているのかわかりません。私はXcodeを始めたばかりで、私にとっては新しいものです。警告には、「セマンティック問題の不完全な実装」とだけ書かれています

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

@implementation classOne    <------ this is where I get the Warning

-(void) print
{
    NSLog(@"I am %i years old, and weigh %i lbs.", age, weight);
}

-(void) setAge:(int) a
{
    age = a;
}

-(void) setWeight: (int) w
{
    weight = w;
}
@end

.h ファイルは以下のとおりです。

#import <Foundation/Foundation.h>

@interface classOne : NSObject {

    int age;
    int weight;


} //Person: NSObject

-(void) print;
-(void) setAge: (int) a;   //same as  void setAge(int a);
-(void) setWight: (int) w;  //same as  void setWeight(int a);
@end

主なファイルは次のとおりです。

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

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

@autoreleasepool {
    classOne *Trenton;

    Trenton = [classOne alloc]; //reserves memory for the object Trenton
    Trenton = [Trenton init];   //initalizes the object

    [Trenton setAge: 25];
    [Trenton setWight: 230];
    [Trenton print];
    //[Trenton release]; //release frees any memory we borrowed from alloc
}
return 0;
}
4

3 に答える 3

2

Xcode で、左側のサイドバーの警告タブ (左から 4 番目のアイコンで、 のようなアイコン) で警告を見つけ、その/!\横にある小さな三角形をクリックします。不足しているすべてのメソッドがリストされます。

于 2013-02-22T21:12:09.887 に答える
1

と でメソッドのスペルを同じにする必要があり@interfaceます@implementationeインを忘れたようですsetWeight:

 -(void) setWight: (int) w;  //same as  void setWeight(int a);

コンパイラは、宣言のこのタイプミスに基づいて、@interfaceという名前のメソッドを実装することを期待しているため、警告していますが、 を実装しsetWight:ていますsetWeight:

于 2013-02-22T21:24:27.753 に答える
0

インターフェイスに、実装に存在しないインターフェイスで定義されたメソッドがあるか、インターフェイスがプロトコルを実装することを宣言し、そのプロトコルには必要なメソッドがあり、それらを実装ファイルに実装していません。

于 2013-02-22T21:19:45.393 に答える