2

以下のコーディングは機能しており、2 番目の画面で値を確認できます。しかし、この形式の異なる変数を持つ他のクラスでも同じものを使用しています。しかし、クラス名をドットで入力した後、変数が表示されません。私はこれを理解することはできません。値を他のクラスに渡す方法はありますか。

        InstallProfiler_2 *installProfiler2 = [[InstallProfiler_2 alloc] initWithNibName:@"InstallProfiler_2" bundle:nil];

        installProfiler2.profilerType2 = profilerType;

        [self.navigationController pushViewController:installProfiler2 animated:NO];
        [installProfiler2 release];
4

3 に答える 3

2

次のことを確認してください。

  • クラスヘッダーをインポートしました。
  • 宣言はこの@propertyヘッダーにあり、クラス拡張ではありません。

@propertyあなたが言うとき

クラス名をドットで入力した後

この用語は正しくありません。おそらく、クラスのインスタンスへのポイントを持つ変数の名前を入力し始めた後のことを意味します。

ClassA.h

@interface ClassA : NSObject

@property (nonatomic, weak) NSInteger myInt;

@end

ClassA.m

@implementation ClassA

@synthesize myInt = _myInt;

@end

ClassB.m

#import "ClassA.h"   // <- Import the header of the class

@ implementation ClassB

//  .. other methods and stuff

- (void)myMethod;
{
     ClassA *instanceOfClassA = [[ClassA alloc] init];   // <- Working with an instance not a class
     instanceOfClassA.myInt = 1;
}

@end

アップデート

丸括弧の間に@property ()がないことを確認してください。readonlyまた@synthesize、実装で ivar を作成したか、ivar の getter と setter の両方を提供したことを確認してください。

関連するコードが表示されない場合は、実際に何をしているかを確認できます。ここでは、かなり盲目的に答えています。

于 2012-01-04T15:36:04.337 に答える
0

カスタムセッター/ゲッターを作成します。

+ (BOOL)awesomeClassVar {
    return _classVar;
}

+ (void)setAwesomeClassVar:(BOOL)newVar {
    _classVar = newVar;
}

次に、他のクラスからメソッドとして呼び出します。

BOOL theOtherClassVar = [AwesomeClass awesomeClassVar];
[AwesomeClass setAwesomeClassVar:!theOtherClassVar];
于 2012-01-04T15:27:32.930 に答える
0

ドット構文は、property/synthesize でのみ使用できます

于 2012-01-04T15:26:33.170 に答える