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 中,在左侧边栏的警告选项卡中找到警告(它是左起第四个图标,看起来像 的那个/!\),然后单击它旁边的小三角形。它将列出所有缺少的方法。

于 2013-02-22T21:12:09.887 回答
1

您需要在@interface和 中拼写相同的方法@implementation。看起来你忘记esetWeight:

 -(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 回答