【问题标题】:iPhone managing reusable UIImages and UIViewsiPhone 管理可重用的 UIImages 和 UIViews
【发布时间】:2011-08-02 12:18:23
【问题描述】:

将我的 UI 常量保持在可从所有控制器访问的单独类中的最佳方法是什么?

UIView、UIImage 和 UIColour 所有这些图像和颜色在我的控制器中创建了如此混乱的分配和释放,其中大多数甚至是相同的。我不想在不同的类中一遍又一遍地分配/释放相同的图像和视图,CAlayers,我想创建它们一次,缓存它们(或类似的东西)并在需要时轻松访问。

我想保持内存和我的代码干净。

【问题讨论】:

  • 我没听懂你想说什么。我分配对象并负责在使用后释放它。

标签: iphone ios ios4


【解决方案1】:

是的,有可能

创建一个类似 gconstants 的类,然后将所有字符串存储在 h/m 文件中

 extern NSString *const APP_TITLE;

 @interface UIColor (APP)
+(UIColor *) APP_NAV_COLOR;
 @end

在 .m 文件中

 NSString *const APP_TITLE = @"APP Name";

@implementation UIColor (APP)

+(UIColor *) APP_NAV_COLOR { return [UIColor colorWithRed:00/256.0 green:111/256.0    
 blue:59/256.0 alpha:1.0]; }

@结束

并在任何控制器中声明头文件

 self.title = APP_TITLE;

【讨论】:

  • tnx 我需要在一个类中添加多个接口和实现吗?以及实现UIColor(APP)中的“APP”到底是什么
  • @xdeveloper : 是我的应用名称!
【解决方案2】:

您可以使用在头文件中定义的一些宏,然后您可以将其包含在所有适当的实现文件中,如果您想让项目中的每个文件都可以使用它们,甚至可以包含在您的 prefix.pch 中。

例如,想象一个名为Config.h的头文件

对于共享的UIColor,您可以添加以下内容...

#define SOME_CONSTANT_COLOR    [UIColor colorWithRed:0.5f green:0.5f blue:0.5f alpha:0.5f]

然后您可以像使用任何其他宏一样访问它...

#import "Config.h" // at the top of you implmentation file, or prefix header

someView.backgroundColor = SOME_CONSTANT_COLOR;

图片也是如此..

#define SOME_IMAGE    [UIImage imageNamed:@"someImage.png"]; // In config.h

myImageView.image = SOME_IMAGE; // In implementation file

【讨论】:

  • 我已经更新了我的答案以显示图像支持;只要类返回一个自动释放的对象(即你不必分配/初始化),你几乎可以用这种方式做任何你喜欢的事情
  • tnx!这种方法和创建单例类有什么区别?性能很重要,如果 CAlayers、渐变等,我会使用很多。
  • 我不太确定性能差异,但这样看,使用宏而不是单例意味着要初始化的对象更少,否则只能提供相同的功能。
猜你喜欢
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多