0

Xcode 4.4 で数学ベースのアプリケーションを作成しました。ストーリーボードの助けを借りてタブバーベースのアプリを使用しています。

私はすべての数学関数を、 CalculationMethodsNSObject のサブクラスと呼ばれる別のクラスに記述しました。

私のViewController:

//  FirstViewController.h

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

@interface FirstViewController : UIViewController

@end

//  FirstViewController.m

#import "FirstViewController.h"
#import "CalculationMethods.h"

@interface FirstViewController ()

@end

@implementation FirstViewController



- (void)viewDidLoad
{
    [super viewDidLoad];

    NSLog(@"%f",[self julianDateFinder: [self currentDayMonthAndYearFinder]]);
}

@end

ご覧のとおり、CalculationMethod.h ファイルを FirstViewController.h と FirstViewController.m ファイルの両方に含めましたが、 や などのそのクラスのメソッドを使用するjulianDateFinderと、次のようcurrentDayMonthAndYearFinderに Xcode エラーが発生します。

「'FirstViewController' の表示されない @interface は、セレクター 'CurrentDayMonthAndYearFinder' を宣言します」

私はiOSとXCodeが初めてです。誰でもエラーの解決を手伝ってもらえますか?

4

2 に答える 2

0

Objective C の仕組みを少し誤解していると思います。

ヘッダー ファイルの詳細を追加しCalculationMethods.hないと、あまり役に立ちませんが、そのコンパイラの警告はFirstViewController、 method がないことを示していますcurrentDayMonthAndYearFinder

これが当てはまる理由は、インスタンスのコンテキストで実際にのインスタンスであるセレクターCurrentDayMonthAndYearFinder の実行を呼び出しているためですselfFirstViewControllerFirstViewController

CurrentDayMonthAndYearFinderメソッドがクラスにあると自分で言ったCalculatorMethodsので、CalculatorMethods クラスのインスタンスを作成するか、CalculatorMethods クラスで名前が付けられたクラス メソッドを呼び出すことをお勧めしますCurrentDayMonthAndYearFinder

ここでの問題は、天候か、インスタンス メソッドまたはクラス メソッドを定義していないかです。

自分自身に感謝し、次の内容で質問を更新してくださいCalculationMethods.h

于 2012-07-30T01:32:28.893 に答える
0

FirstViewController で、CalculationMethods クラスのメソッドを使用するには、CalculationMethods のインスタンスを作成する必要があります。次に、次の構文を使用してメソッドにアクセスします。 [instanceOfCalculationMethods aMethodInCalculationMethods];

たとえば、あなたの場合、これを試してください:

FirstViewController.h ファイルの @end の前:

CalculationMethods *_calculationMethods;

そして、viewDidLoad メソッドでは:

_calculationMethods = [CalculationMethods alloc] init];
NSLog(@"%f",[_calculationMethods julianDateFinder: [_calculationMethods currentDayMonthAndYearFinder]]);
于 2012-07-30T03:28:28.990 に答える