在Objective-C中调用方法层次结构

时间:2014-10-10 11:19:11

标签: ios objective-c scope

我声明了一个类方法:

+(int)widthScaled:(UIImage *)image maximumHeight:(int)max{
    int width = 0;
    width = (image.size.width - (((image.size.height - max)*100)/image.size.height)*image.size.width)/100;

    return width;

}

在同一个类中,我声明了一个像这样的实例方法:

- (void)generarVistas{
    if(...){
       ...
    }else{
         for(...){
               ...
//I need to put the class method here but if I call the class method like this, don't recognize
               int variable = [[self class] widthScaled:image maximumHeight:max];
...
}
}

我尝试将class方法放在实例方法中,但不起作用。 我应该指出哪些背景来识别类方法?

1 个答案:

答案 0 :(得分:2)

您面临的问题是[self class]是一个运行时调用,直到运行时才会知道返回结果。编译器不知道它是什么类。您写的代码必须始终从固定的类中调用,所以不要这样做。如果该类是FooClass,则使用以下形式:

int variable = [FooClass widthScaled:image maximumHeight:max];

(将[self class]替换为您的班级名称,例如FooClass。)