【问题标题】:How can I create a strong Boolean in Objective C如何在 Objective C 中创建一个强布尔值
【发布时间】:2014-05-08 14:19:57
【问题描述】:

我知道我不能拥有类似的东西:

@property (strong, nonatomic) BOOL didSomethingHappen;

我要复制的是,在从 TableViewCell 中分离出来的特定 ViewController 中,如果提交了特定操作,则将 BOOL didSomethingHappen 设置为 True。现在,如果你从不同的 TableViewCell 转到同一个 View Controller,那么 didSomethingHappen 应该是默认值。

我认为我需要为每个单独的 ViewController 对象提供一个很好的强布尔值。有人可以告诉我如何实现这一目标吗?我对 Objective C 很陌生。

回顾一下。

|    Table Cell 1    | ----------> |    VC with didSomethingHappen     |
|    Table Cell 2    | ----------> |    VC with !didSomethingHappen    |
|    Table Cell 3    | ----------> |    VC with didSomethingHappen     |

非常感谢各位。

【问题讨论】:

    标签: ios objective-c properties scope boolean


    【解决方案1】:

    (strong) 在这里帮不了你。 (strong) 与分配给属性的方式处理引用计数有关。如果将对象分配给(strong) 属性,则分配对象的引用计数会增加,从而防止在属性持有引用时释放它。 (weak) 属性不会执行此操作,因此在属性持有引用时可能会释放引用的对象。在这种情况下,该属性将设置为 nil。

    由于 BOOL 是一种内在类型而不是对象,它的值只是简单地赋值给属性,属性不持有引用;所以你不能做到(strong)(weak)

    每个对象实例都有属性。因此,您需要确保每个单元格的操作实例化视图控制器的新副本并在调用 segue(或作为 prepareForSegue 的一部分)之前适当地分配 bool。

    【讨论】:

    • 是的。在此之后去了一处房产。谢谢你的建议。
    【解决方案2】:

    例如,您始终可以将 BOOL 包装到 NSNumber* 中并创建指向该对象的强指针。检查numberWithBoolboolValue 函数https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSNumber_Class/Reference/Reference.html

    【讨论】:

    • 虽然这将允许声明属性(强),但它无助于解决每个 VC 实例都有属性的实际问题 - 这是隐含的
    • 嘿,Paulw 是对的。虽然这是一个不错的中间修复,但它并没有给我我正在寻找的确切东西。不过,谢谢你。这让我想到了再次使用布尔值时的好主意。
    猜你喜欢
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 2014-02-20
    • 2016-01-31
    • 2010-09-25
    • 1970-01-01
    相关资源
    最近更新 更多