对象的引用返回null(iOS类继承)

时间:2013-11-12 15:16:38

标签: ios objective-c class inheritance

我是iOS编程的新手,并且在继承类时存在一些问题。

我有一个带有对象的类(在.h中初始化为属性)

@property (nonatomic, weak) NSNumber *count;

对于在某个功能中按下的每个按钮,它会递增。

在另一个课程中我引用它:

#import "otherClass.h"
...
otherClass *otherC = [[otherClass alloc]init];
NSLog(@"COUNT: %@", otherClass.count);

无论我如何尝试,输出仍为空。我不确定我是否错误地执行了它。请帮忙!

**找到解决方案

(1)定义一个新类,称之为RSModel(2)将@property(非原子)NSInteger计数移动到该新类中,以及您定义的实例方法。实例方法需要更改为返回RSModel(3)在需要访问计数的所有视图控制器中,包括“RSModel.h”,并写入[RSModel instance] .count以访问共享计数器。

2 个答案:

答案 0 :(得分:4)

定义属性weak时,意味着至少存在一个对同一对象的强引用,这样就不会释放它。它看起来并不像你的情况那样。此外,您似乎不需要NSNumber - NSInteger就足够了。在这种情况下,您不必担心弱/强的区别:

@property (nonatomic) NSInteger count;

...
therClass *otherC = [[otherClass alloc]init];
NSLog(@"COUNT: %d", otherClass.count);

但请注意,由于count是一个实例属性,因此需要在otherClass的同一个实例上进行递增。该类的所有新对象都将其count属性设置为默认值零。

答案 1 :(得分:3)

通过声明你的@property为弱者,你说其他人拥有该对象,如果没有其他东西指向它,则自动解除分配并将其设置为nil。我猜这不是你想做的。尝试将其更改为:

@property (nonatomic, strong) NSNumber *count;