6

我将一些常量编码到几个不同的 viewController 和 NSObject 类 atm 中。我工作中的一个人说我应该把它们放到他们自己的类中(即常量类)

我想知道这种设计的优点和缺点是什么,以及是否应该做一些关于如何做的澄清会很棒。

例如,我是否只是创建一个新的 NSObject 类并在其中包含一堆#defines?那么当我需要使用它们时,我是否只是将我的常量类子类化并使用这个类中的常量,就像我会使用另一个类中的任何其他方法或变量一样?

IE

myclass.theConstant

任何帮助将不胜感激。

4

2 回答 2

11

将常量与使用它们的东西放在一起。不要创建全局“一切不变”文件。这使得代码重用非常头疼。例如,如果您发布通知,则需要通知名称字符串。所以你把它放在发布通知的类中:

.h
extern NSString * const MYObjectDidSomethingNotification;

.m
NSString * const MYObjectDidSomethingNotification = @"MYObjectDidSomethingNotification";

常量通常不是方法或定义。它们只是像上面一样的常量全局变量。您应该尽可能避免使用#define,但在某些地方它非常有用(例如常量UIColor对象,否则会令人沮丧地初始化)。

花一点时间在 Apple 头文件中查看示例。查看 UIWindow.h、UITableViewCell.h 和 UITableView.h 中的几个很好的例子来说明常量是如何定义的。

于 2012-04-22T22:53:39.873 回答
0

如果您只是拥有#defines它们,则不需要在任何课程中-只需将它们粘贴在自己的 .h 文件中即可。

于 2012-04-22T22:50:27.133 回答