我明白我不能拥有这样的东西:
@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 |
非常感谢你们。
答案 0 :(得分:2)
(strong)
在这里没有帮到你。 (strong)
与属性的分配处理引用计数的方式有关。如果将对象分配给(strong)
属性,则会增加分配对象的引用计数,从而防止在属性保存引用时释放它。 (weak)
属性不会执行此操作,因此可以在属性保存引用时释放引用的对象。在这种情况下,属性将设置为nil。
由于BOOL是一个内在类型而不是一个对象,它的值只是赋给该属性,该属性不包含引用;因此,您无法(strong)
或(weak)
。
每个对象实例都存在属性。因此,您需要确保每个单元格的操作实例化视图控制器的新副本,并在调用segue之前(或作为prepareForSegue
的一部分)适当地分配bool。
答案 1 :(得分:0)
例如,您总是可以将BOOL包装到NSNumber *中,并创建一个指向该对象的强指针。检查numberWithBool
和boolValue
函数https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSNumber_Class/Reference/Reference.html