【问题标题】:Creating a constant dictionary object创建常量字典对象
【发布时间】:2011-04-20 19:29:03
【问题描述】:

我想完成类似这篇文章中所做的事情:Constants in Objective-C

但是,我想构建一个 NSDictionary。

如果我这样做:

常量.h

extern NSArray *const mFooKeys;
extern NSArray *const mFooObjects;
extern NSDictionary *const mFooDictionary;

常量.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 中释放并且一切都很好,还是还有更多?这是一个比“有问题”的问题更谨慎的问题,但我觉得我真的可以在没有意识到的情况下把它搞砸。

【问题讨论】:

    标签: objective-c release constants nsdictionary


    【解决方案1】:

    为了拥有像NSDictionary 这样基于其他核心数据类型的常量,您需要将其包含在将使用该常量的类中,或者创建一个Singleton class 并存储@987654323 @ 那里。只有一些类类型在您正在查看的实现中不起作用;您正在查找的常量代码需要用作对象才能正常工作,但我认为这违背了目的。我不清楚在简单常量实现中你能做什么和不能做什么的决定因素是什么,但我遇到了同样的问题,单例设计模式对我来说非常有效。 (无论哪种方式,您都应该适当地dealloc,即使它们将在应用程序的整个生命周期内都存在。)

    【讨论】:

      【解决方案2】:

      您将这些声明为常量,因此它们是在您的应用程序的整个生命周期内都将持续存在的单个对象。无需释放,因为在应用程序退出之前需要它们。

      您不想在 dealloc 中释放,因为每次释放相关类的实例时都会释放。

      【讨论】:

        猜你喜欢
        • 2010-09-21
        • 1970-01-01
        • 2014-06-21
        • 1970-01-01
        • 2018-08-26
        • 2023-03-22
        • 2013-09-02
        • 2019-02-20
        • 1970-01-01
        相关资源
        最近更新 更多