所以我有一个设置整数的方法:-(void)setcurrentviewfromint:(int)currentint{
它位于一个名为MyView
的类中。从我的viewDidLoad
方法中,我将其调用,并将其设置为1:
currentview
是int类型,在我的头文件
- (void)viewDidLoad
{
[super viewDidLoad];
MyView *myview = [[MyView alloc]init];
[myview setcurrentviewfromint:1];
}
然后,在MyView.m
中,我有这些类:
-(void)setcurrentviewfromint:(int)currentint{
currentview = currentint;
NSLog("currentviewis:%d",currentview);
[self setNeedsDisplay];
}
- (void)drawRect:(CGRect)rect {
NSLog(@"drawRectCalled");
if (currentview == 1) {
NSLog(@"do something here");
}
}
}
但调试器打印出来:
2012-07-18 18:02:44.211 animation[76135:f803] currentviewis:1
2012-07-18 18:02:44.223 animation[76135:f803] drawRectCalled
但是不打印“在这里做点什么”。有什么想法currentview
不等于1?
答案 0 :(得分:2)
首先,关于你的问题。 当前视图的数据类型是什么? 其次,它看起来像你在setcurrentviewfromint中的NSLog:永远不会被调用。如果它被调用,你会看到“currentviewis:1”,所以要确保正确链接。
而且,我必须说,骆驼案!您的方法名称都是小写的,很难阅读。 :)
答案 1 :(得分:0)
问题是您正在设置的MYView不是您正在从中读取currentView的那个。
在viewDidLoad中,您正在创建一个局部变量myView,然后设置其当前视图,然后此myView变为内存泄漏,因为没有任何指向它。
假设MyView是viewDidLoad所在的类,而currentview是该类的int属性(虽然为什么方法不是setcurrentview :)。我希望代码更像
- (void)viewDidLoad
{
[super viewDidLoad];
[self setcurrentviewfromint:1];
}
因此设置当前视图
正如其他人所说,请使用CamelCase的Objective C标准