在+(void)问题中设置BOOLEAN

时间:2013-12-30 12:51:22

标签: ios objective-c boolean void

我试图用+(void)方法调用BOOL,但我不能。为什么不在+(void)方法中设置?虽然它正在处理所有-(void)方法。

·H

@property (nonatomic, assign) BOOL line;

的.m

+ (void)normalizeCell:(UITableViewCell *)cell withLables:(NSArray *)lbls sx:(CGFloat)sx widths:(NSArray *)widths
if (![cell.contentView viewWithTag:22])
{
    UIImageView *gb = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"table.png"]];
    gb = 22;
    [cell.contentView addSubview:gb];
    [gb release];
}

2 个答案:

答案 0 :(得分:3)

无法仅在class method (+)中使用instance method (-)中的标题属性。

这是某种从其他编程语言中已知的static方法。在objective-c中,您可以使用类方法执行适合您创建的类的操作,但您必须记住,使用类方法 NOT 是对象操作。您不必创建使用类方法的对象,当然也无法访问对象的属性。

答案 1 :(得分:1)

+方法是类级方法,属性是实例级变量。因此,不可能设置它们,它们将设置在什么实例上?如果需要保持状态,则不应使用类级方法。如果你真的想要这样,你可以保持状态。

+ (BOOL)myBool:(NSNumber *)boolValue{

    static BOOL myBool = false;
    if (boolValue){
        myBool = [boolValue boolValue];
    }
    return myBool;
}

如果你想让它不是公共接口的一部分,只需将它直接放在.m文件中,这样对于其他类它是不可见的。然后当你进入你的其他类方法时,你就可以做到。

BOOL b = [self myBool:nil]; // get value
[self myBool:[NSNumber numberWithBool:YES]]; // set value

如果您有理由想从您的实例访问此内容,您可以这样做。

BOOL b = [MyClass myBool:nil];
[MyClass myBool:[NSNumber numberWithBool:NO]];