如何在Objective C中创建一个强大的布尔值

时间:2014-03-28 22:41:08

标签: ios objective-c properties scope boolean

我明白我不能拥有这样的东西:

@property (strong, nonatomic) BOOL didSomethingHappen;

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

我认为我需要的是每个ViewController对象的强大布尔值。有人能告诉我如何实现这一目标吗?我对Objective C非常陌生。

回顾。

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

非常感谢你们。

2 个答案:

答案 0 :(得分:2)

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

由于BOOL是一个内在类型而不是一个对象,它的值只是赋给该属性,该属性不包含引用;因此,您无法(strong)(weak)

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

答案 1 :(得分:0)

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