我有Class1
,Class2
和SubclassOfClass2
. 我想调用SubclassOfClass2
from中的方法Class1
。我愿意:
Class2 *class = [[Class2 alloc] init];
[class someMethod];
但是,正如我猜测的那样,由于alloc
,之后所有变量值都将丢失。因为:
在运行时Class2
正在执行。它设置例如变量float x = image.size.width
。它返回正确的值。稍后,例如用户按下按钮后,Class1
正在执行。someMethod
从Class1
变量调用后x
返回0.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
类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