2011-11-07 6 views
-2

変数bounds、widthおよびheightは現在のローカル変数です。私は他のクラスからアクセスできず、別の方法でアクセスすることもできません。変数を他のクラスにアクセスさせるにはどうすればよいですか?

これらの変数をインスタンス全体で使用できるようにするにはどうすればよいですか?私はそれらを.hファイルの中に置き、CGFloatsに改名して無駄にしようとしました。

#import "TicTacToeBoard.h" 

@implementation TicTacToeBoard 

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code 
    } 
    return self; 
} 

- (void)drawRect:(CGRect)rect 
{ 
    CGRect bounds = [self bounds]; 
    float width = bounds.size.width; 
    float height = bounds.size.height; 

    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    CGContextSetRGBStrokeColor(ctx, 0.3, 0.3, 0.3, 1); 
    CGContextSetLineWidth(ctx, 5); 
    CGContextSetLineCap(ctx, kCGLineCapRound); 

    CGContextMoveToPoint(ctx, width/3, height * 0.95); 
    CGContextAddLineToPoint(ctx, width/3, height * 0.05); 
    CGContextStrokePath(ctx); 

} 

@end 

答えて

1

プロパティを使用すると、他のオブジェクトから変数にアクセスできるようにすることができます。

@property (nonatomic, retain) NSString *myString; 

をして、あなたの実装に

@synthesize mystring; 

を追加:あなたのインターフェイスで

はこのような何かを追加します。

プロパティを取得して変更するには、2つのメソッドが作成されます。

あなたが [self setMystring:@"new value"]を使用して、クラス内のプロパティの値を変更することができますかあなたはすでにインターフェイスで宣言された同じ変数を持っているし、それから、プロパティを作成する場合は、クラス内の道をあなたの変数を使用し続けることができ
[myObject myString]; // returns the property 
[myObject setMyString:@"new string"]; // changes the property 

// alternately, you can write it this way 
myObject.myString; 
myObject.mystring = @"new string"; 

あなたはそうです。

開発者向けドキュメントのプロパティ詳細があります:それは私には発生しなかった理由をhttp://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectiveC/Chapters/ocProperties.html#//apple_ref/doc/uid/TP30001163-CH17-SW1

0

使用ゲッターセッター又は

@property(nonatomic) CGFloat width; 

@synthesize width; 
1

境界、幅と高さとそれを生成するには、のdrawRect方法のコンテキストでのみ存在するローカル変数です。

は、なぜあなたは使用しません。他の方法で

CGRect bounds = [self bounds]; 
float width = bounds.size.width; 
float height = bounds.size.height; 

+0

は知らん笑。これを他の方法に再入力すると、変数をよりアクセスしやすくするよりも練習が悪くないでしょうか?私は、インスタンスの属性を記述するときにそれらをローカル変数として保持する理由は見当たりません。 – Deco

関連する問題