我想完成这篇文章中正在做的事情:
Constants in Objective-C
但是,我想构建一个NSDictionary.
如果我这样做:
constants.h
extern NSArray *const mFooKeys; extern NSArray *const mFooObjects; extern NSDictionary *const mFooDictionary;
constants.m
NSArray *const mFooKeys = [[NSArray alloc] initWithObjects: @"Foo",@"Bar",@"Baz",nil]; NSArray *const mFooObjects = [[NSArray alloc] initWithObjects: @"1",@"2",@"3",nil]; NSDictionary *const mFooDictionary = [[NSDictionary alloc] dictionaryWithObjects:mFooObjects forKeys:mFooKeys];
我是以dealloc发布的,一切都很好,还是有更多的东西?这比一个“有问题”的问题更加谨慎,但我觉得如果没有意识到这一点,我真的可能会搞砸了.
解决方法
为了获得像NSDictionary这样基于其他核心数据类型的常量,您需要将它包含在将使用常量的类中,或者创建一个
Singleton class并在那里存储NSDictionary.只有一些类型在您正在查看的实现中不起作用;您正在寻找的常量代码需要用作对象才能正常工作,但我认为这种目的无法实现.我不清楚在简单的常量实现中你能做什么和不能做什么的决定因素,但我遇到了同样的问题,而Singleton设计模式对我来说非常适合. (无论哪种方式,即使它们在应用程序的生命周期中存在,您也应该适当地dealloc.)