0

提案されたリンクのいくつかを確認しましたが、答えが見つかりませんでした。オブジェクト breuk の初期化に 2 つの float 値を渡したいです。オブジェクトには初期化メソッド init withTeller: (float) mijnTeller および Noemer: (float) mijnNoemer があります。このメソッドは浮動小数点商も返します。

まず、互換性のない型 float の式で __strong を初期化する場合のように、エラーが発生します。これはメソッド berekenQuotient でオブジェクト breuk の初期化時に与えられます。

また、breuk.h でプロパティ mijnTeller と mijnNoemer を宣言する必要があるかどうかも疑問に思っていました。これらは berekenQuotient を介して渡されるためです。送信!

コード:

ビューコントローラー.h:

   #import <UIKit/UIKit.h>
   #import "breuk.h"

   @interface ViewController : UIViewController
   @property (strong, nonatomic) IBOutlet UITextField *tellerVeld1;
   @property (strong, nonatomic) IBOutlet UITextField *noemerVeld1;
   @property (strong, nonatomic) IBOutlet UILabel *quotientVeld;


   - (IBAction)berekenQuotient:(id)sender;
   @end

viewcontroller.M

   #import "ViewController.h"

   @interface ViewController ()

   @end

   @implementation ViewController
   @synthesize tellerVeld1;
   @synthesize noemerVeld1;
   @synthesize quotientVeld;


  - (void)viewDidLoad
  {
     [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
  }

  - (void)didReceiveMemoryWarning
  {
     [super didReceiveMemoryWarning];
     // Dispose of any resources that can be recreated.
   }

  - (IBAction)berekenQuotient:(id)sender {
    float teller = [tellerVeld1.text floatValue];
    float noemer = [noemerVeld1.text floatValue];
    breuk *breuk1 = [[breuk alloc]initWithTeller:teller andNoemer:noemer];


    //float quotient = [tellerVeld1.text floatValue]/[noemerVeld1.text floatValue];
    //quotientVeld.text = [[NSString alloc]initWithFormat:@"%.2f", quotient];

   }
   @end

breuk.h

  #import <Foundation/Foundation.h>

  @interface breuk : NSObject
  @property float mijnTeller;
  @property float mijnNoemer;
  @property float quotient;



  - (float) initWithTeller: (float) mijnTeller andNoemer:(float) mijnNoemer;
   @end

breuk.m

   #import "breuk.h"

   @implementation breuk
   @synthesize mijnTeller;
   @synthesize mijnNoemer;
   @synthesize quotient;


   - (float)initWithTeller:(float)mijnTeller andNoemer:(float)mijnNoemer{
      return quotient = mijnTeller/mijnNoemer;

 }

 @end
4

3 に答える 3

1

すべてのinitメソッドは、独自のクラスのインスタンスを返す必要があります。必要なのは、計算を行うクラス メソッドだけです。また、すべてのクラスは大文字で始める必要があります。

Breuk.h

  #import <Foundation/Foundation.h>

  @interface Breuk : NSObject
  @property float mijnTeller;
  @property float mijnNoemer;
  @property (readonly) float quotient;

  - (instancetype) initWithTeller: (float) mijnTeller andNoemer:(float) mijnNoemer;
  @end

ブローク.m

  #import "Breuk.h"

   @implementation breuk

   @synthesize mijnTeller;
   @synthesize mijnNoemer;
   @synthesize quotient;

 - (id)initWithTeller:(float)mijnTeller andNoemer:(float)mijnNoemer{
     self = [super init];
     if (self) {
       self.mijnTeller = mijnTeller;
       self.mijnNoemer = mijnNoemer;
     }

     return self;
 }

 - (float) quotient {
     return mijnTeller/mijnNoemer;
 }

 @end

または単にクラスメソッドを使用する

Breuk.h

  #import <Foundation/Foundation.h>

  @interface Breuk : NSObject

  + (float) quotientWithTeller:(float)teller andNoemer:(float)noemer;
   @end

ブローク.m

  #import "Breuk.h"

  @implementation breuk
  + (float) quotientWithTeller:(float)teller andNoemer:(float)noemer;
     return teller/noemer;
  }

  @end

クラスメソッドを使用すると、クラスのインスタンスは必要ありません。Breukクラスで呼び出すだけです。

 float quotient = [Breuk quotientWithTeller:teller andNoemer:noemer];
于 2013-10-21T14:40:03.517 に答える
0

floatを返すため、互換性のない型 float の式で __strong を初期化するとエラーが発生しますが、型を持つものに割り当てています。デフォルトでは、ようなローカル変数は強い参照であり、エラーの __strong 部分が発生します。initWithTeller:andNoemer:breuk1breukbreuk1

プロパティとbreuk.hを宣言する必要はありませんこれらの値を保存し、後で再度使用する場合にのみ、これを行う必要があります。mijnTellermijnNoemer

また、そもそもオブジェクトを作成しようとする必要はないと思いますbreuk。クラス メソッドを使用してその計算を実行できます。

于 2013-10-21T14:45:11.870 に答える