-1

我有Class1,Class2SubclassOfClass2. 我想调用SubclassOfClass2from中的方法Class1。我愿意:

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

但是,正如我猜测的那样,由于alloc,之后所有变量值都将丢失。因为:

在运行时Class2正在执行。它设置例如变量float x = image.size.width。它返回正确的值。稍后,例如用户按下按钮后,Class1正在执行。someMethodClass1变量调用后x返回0.00000。如何使其工作以使变量值不会丢失?

正如我被问到的,这是我的someMethod代码:

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

在运行时,该方法返回3200.00000,当它被调用Class1时返回0.00000。变量x声明在Class2,方法someMethodSubclassOfClass2


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

类2.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 因为您正在调用init. initWithCoder:这是与设置不同的方法x

(其他问题:让您的类作为基类继承自 NSObject 并且不用class作变量名......尤其是当它不是类对象时。)

于 2012-08-27T11:24:09.993 回答