不能做整数==比较

时间:2012-07-18 22:29:01

标签: ios if-statement

所以我有一个设置整数的方法:-(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?

2 个答案:

答案 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标准