【问题标题】:Set BOOL property from another class从另一个类设置 BOOL 属性
【发布时间】:2011-11-05 18:35:40
【问题描述】:

我可以知道如何将一个 BOOL 变量从一个类共享到另一个类吗?

这就是我想要做的。我在 SecondVC 设置 FirstVC 的 BOOL 变量。当我尝试更改 BOOL 值时应用程序崩溃时,我在这里做错了什么。没有错误日志。

FirstVC.h

@interface FirstVC : UIViewController <UITextFieldDelegate>{
    BOOL pickUpAddressIsSet;

}

@property (nonatomic) BOOL pickUpAddressIsSet;
@end

FirstVC.m

@synthesize pickUpAddressIsSet;

secondVC.m

NSArray *viewControllers = [self.navigationController viewControllers];
FirstVC *firstVC = (FirstVC *)[viewControllers objectAtIndex:viewControllers.count - 2];
firstVC.pickUpAddressIsSet = YES; // tried TRUE & 1

【问题讨论】:

  • 您确定您的导航堆栈中至少有两个元素吗?您可能在数组中索引超出范围
  • @Perception 是的。我可以使用 firstVC 对象设置我的 NSString 变量之一。 SecondVC 被直接推到作为 rootVC 的 FirstVC 之上。
  • 请从您的 .h 文件中发布您的 pickUpAddressIsSet ivar 和属性的确切声明。
  • @Perception 编辑了我的问题。
  • 您的代码对我来说看起来不错。尝试执行 firstVC.pickupAddressIsSet = TRUE 并报告错误(如果有)

标签: objective-c boolean


【解决方案1】:

试试这个:

@property(nonatomic, assign, getter= isPickUpAddressIsSet) BOOL pickUpAddressIsSet;

对我有用

【讨论】:

    【解决方案2】:

    似乎firstVC 实例实际上不是FirstVC 类型(类),这可以解释错误。

    尝试以下方法:

    NSArray *viewControllers = [self.navigationController viewControllers];
    id firstVC = [viewControllers objectAtIndex:viewControllers.count - 2];
    NSLog(@"%@", [firstVC class]);
    

    你在 NSLog 输出中看到了什么样的类?

    【讨论】:

    • NSLog 输出为 FirstVC。假设对象是正确的,因为我可以设置 NSString 之一?
    【解决方案3】:
    firstVC.pickUpAddressIsSet: = YES;
    

    应该是

    firstVC.pickUpAddressIsSet = YES;
    

    冒号不应该在那里。

    【讨论】:

    • 对不起,这是一个拼写错误。我试过firstVC.pickUpAddressIsSet = YES/TRUE/1 & [firstVC setPickUpAddressIsSet:YES] 似乎都不起作用...
    • 在这种情况下,我同意其他所有人的观点,因为您的代码看起来不错。这意味着问题出在我们看不到的某些部分。如果你尝试 [firstVC respondsToSelector:@selector(setPickUpAddressIsSet)]; 会发生什么
    • 另外,设置断点并单步执行代码,没有任何错误的崩溃似乎很奇怪,您可以通过这种方式获得更多信息。
    【解决方案4】:

    我发现这是因为我试图将 BOOL 变量作为字符串记录在代码的其他部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-04
      • 1970-01-01
      • 2017-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-16
      相关资源
      最近更新 更多