2

私は iOS 開発を始めたばかりで、警告のために少し立ち往生しています。ビルドは成功しましたが、この警告が気になります。他のいくつかの回答を確認しましたが、何が問題なのかわかりませんでした。

Waring - 不完全な実装

Complexnumbers.h

#import <Foundation/Foundation.h>

@interface ComplexNumbers : NSObject

-(void) setReal: (double)a;
-(void) setImaginary: (double)b;
-(void) print; // display as a + bi

-(double) real;
-(double) imaginary;

@end

Complexnumbers.m

#import "ComplexNumbers.h"

@implementation ComplexNumbers  // Incomplete implementation

{
double real;
double imaginary;
}

-(void) print
{
    NSLog(@"%f + %fi",real,imaginary);
}
-(void) setReal:(double)a
{
    real = a;
}
-(void) setImaginary:(double)b
{
    imaginary = b;
}

@end
4

3 に答える 3

3

あなたの問題は、あなたのインターフェースがメソッドがあるrealと言っているimaginaryのに、それらを実装していないということです。さらに良いことに、コンパイルでメソッドrealimaginaryセッターメソッドとゲッターメソッドをプロパティとして定義することで合成できます。コードは大幅に簡素化されます。

@interface ComplexNumbers : NSObject

@property (nonatomic) double real;
@property (nonatomic) double imaginary;

-(void) print; // display as a + bi

@end

@implementation ComplexNumbers

-(void) print
{
    NSLog(@"%f + %fi", self.real, self.imaginary);
}

@end
于 2013-02-23T03:43:31.017 に答える
2

これらのプロパティ ゲッターを実装していません:

-(double) real;
-(double) imaginary;

それらを実装することができます:

-(double) real { return _real; }
-(double) imaginary { return _imaginary; }

または、ヘッダーでそれらをプロパティとして宣言することにより、コンパイラーに任せます。

@property(nonatomic) double real;
@property(nonatomic) double imaginary;

そして .m ファイルで:

@synthesize real = _real, imaginary = _imaginary;

_ はインスタンス メンバーです。

于 2013-02-23T03:42:25.913 に答える
0

これを試して、

#import "ComplexNumbers.h"

@implementation ComplexNumbers  // Incomplete implementation

{
double real;
double imaginary;
}

-(void) print
{
  NSLog(@"%f + %fi",real,imaginary);
}

-(void) setReal:(double)a
{
real = a;
 }
-(void) setImaginary:(double)b

{
imaginary = b;
}
 -(double) real
{
   return real;
}
-(double) imaginary
{
   return imaginary;
}

@end
于 2013-02-23T03:50:58.403 に答える