2011-12-08 43 views
3

我没有足够的C知识来解决这方面的问题。我可以使用类方法来设置静态变量吗?

我有大量的NSManagedObjects这是从我目前正在工作的级别下降 - 我的视图控制器正在显示一个父对象的表,其中显示的每个对象的详细指标显示子对象的数量。

用户可以创建一组存储在NSDictionary中的过滤条件。我的子对象有一套复杂的计算,它们根据这些标准来执行,以确定它们是通过还是不通过过滤器。这由一个简单的只读布尔属性在外部表示。

我想要做的是在子对象中有一个静态变量来存放过滤器设置字典,这样我就不必调用用户默认值或类似的方法来获取每个子对象的过滤器设置。

在用户创建过滤器设置的时候,我没有任何特定的指向子对象的指针,并且我不想创建一个获取请求只是为了获得一个 - 所以会有东西像这样适合?

.H:

@interface Child : NSManagedObject 
+(void)setFilterSettings:(NSDictionary*)newFilterSettings; 
@end 

.M:

static NSDictionary *filterSettings; 

@implementation Child 

+(void)setFilterSettings:(NSDictionary*)newFilterSettings 
{ 
    filterSettings = newFilterSettings; 
} 
@end 

当过滤器的设置是由:

[Child setFilterSettings:newFilterSettings]; 

假设这是有效的,有什么东西,做我需要做内存管理?我正在使用ARC。

+0

是的,你可以;但它不是C(如在你的标题中),但是Objective C –

+0

@BasileStarynkevitch - 它使我困惑的静态变量的范围,它们存在于C中还是仅仅是objective-C? – jrturton

+1

@hypercrypt - 他们都是 – jrturton

回答

2

上述代码没有任何问题。这是实现类变量的标准方式,这在ObjC中并不存在。

(附注:我ARC一个巨大的风扇,每个人都应该尽快,因为他们可以使用它,但是当我看到一个不保留二传手我还是本能地抽搐......)

+0

除了应该有一个get访问器,代码没有问题。 – JeremyP

+0

将'__strong'在静态变量上是否正确?编译器似乎允许它。 –

+0

@JeremyP - 我只需要它内部的子对象,我真的需要一个get访问器,我打算直接在实例方法中使用变量。 – jrturton

相关问题