-1

Class1、、、がClass2ありSubclassOfClass2ます。SubclassOfClass2から入っているメソッドを呼び出したいClass1。そうです:

Class2 *class = [[Class2 alloc] init];
[class someMethod];

しかし、私が推測するように、のためにalloc、その後すべての変数値が失われています。なぜなら:

実行時Class2に実行されています。たとえば、変数を設定しますfloat x = image.size.width。そして、それは正しい値を返します。後で、たとえばユーザーがボタンを押した後、Class1実行されています。変数someMethodから呼び出した後、を返します。変数の値が失われないように機能させるにはどうすればよいですか?Class1x0.00000

私が尋ねられたように、ここに私のsomeMethodコードがあります:

-(void)someMethod {
NSLog(@"%f", x);
}

実行時にそのメソッドが返さ3200.00000れ、メソッドから呼び出されるClass1とが返されます0.00000。変数xはで宣言されClass2、メソッドsomeMethodはで宣言されますSubclassOfClass2


Class1.h

@interface Class1

@end

Class1.m

#import "Class1.h"
#import "Class2.h"

@implementation Class1
-(IBAction)buttonPressed:(id)sender {
Class2 *class = [[Class2 alloc] init];
[class someMethod];
}
@end

Class2.h

@interface Class2 {
 float x;
}
@end

Class2.m

#import "Class2.h"
#import "SubclassOfClass2.h"

@implementation Class2
- (id)initWithCoder:(NSCoder *)coder {
    x = 3200;
    [self someMethod];
    return self;
}
@end

SubclassOfClass2.h

#import "Class2.h"

@interface Class2 (subclass) {
}
-(void)someMethod;
@end

SubclassOfClass2.m

#import "SubclassOfClass2.h"
@implementation Class2 (subclass)
 -(void)someMethod {
   NSLog(@"%f", x);
 }
@end
4

1 に答える 1

2

を呼び出しているため、0.00000を返しますinitinitWithCoder:これは、を設定する方法とは異なる方法xです。

(その他の問題:クラスがNSObjectから基本クラスとして継承し、変数名として使用しないようclassにします...特にクラスオブジェクトでない場合。)

于 2012-08-27T11:24:09.993 に答える