我有Class1
,Class2
和SubclassOfClass2
。我想从SubclassOfClass2
调用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
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
答案 0 :(得分:2)
它返回0.00000,因为您正在调用init
。这是与initWithCoder:
不同的方法,x
是设置class
的方法。
(其他问题:让你的类继承NSObject作为基类,不要使用{{1}}作为变量名...尤其是当它不是类对象时。)