我试图用+(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];
}
答案 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]];