我有Class1,Class2和SubclassOfClass2. 我想调用SubclassOfClass2from中的方法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