【问题标题】:Setting BOOLEAN in +(void) issue [closed]在 +(void) 问题中设置 BOOLEAN [关闭]
【发布时间】:2013-12-30 12:51:22
【问题描述】:

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

【问题讨论】:

标签: ios objective-c boolean void


【解决方案1】:

不能class method (+) 中使用您的标头属性,只能在instance method (-) 中使用。

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

【讨论】:

  • 谢谢。所以没有任何解决方案吗?
  • 我已经用解释编辑了我的答案。您没有提供任何信息您的问题是什么 - 使用类方法与实例方法更像是提出解决方案,但您没有在这里提到您的第一个问题。
  • 我的问题是我不能在 void 中调用 line 布尔值。即使我输入 line 我什么也得不到。希望对你有帮助
  • 所以解决方案是——如果你想使用对象属性,你应该使用实例方法(-)而不是类方法(+)。而已。就像我说的(+)方法不能访问属性,因为对象不存在。您在这里尝试做什么毫无意义。
【解决方案2】:

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

+ (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]];

【讨论】:

    猜你喜欢
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    相关资源
    最近更新 更多