【发布时间】:2009-06-30 00:33:21
【问题描述】:
我喜欢通过传递一个值来创建自定义类的实例,该值将在初始化时帮助设置它。我已经覆盖了 init 并实际上将其更改为:
- (id)initWithValue:(NSInteger *)initialValue;
我想将此值存储在实例化对象的属性中,并使用该值生成将与其关联的 UIImage 的文件名。
我的问题是如何最好地在 Cocoa/Obj-C 中解决这个问题。 NSInteger 是满足我需求的最佳参数还是 NSString 会更好? 或者是否有其他设计模式?我不熟悉在这种情况下可用的所有创意方法。假设我的类属性是:
@interface MyView : UIView {
UIImage *image;
NSInteger value;
如果我坚持使用 NSInteger 作为参数,我可以轻松地将 value 分配给它。但随后需要从该值生成“image12.png”(假设 NSInteger = 12)来设置我的 UIImage。像“image”+initialValue+“.png”这样的东西。我相信在 Obj-C 中详细表达为:
NSString *myValue = @"image";
[myValue stringByAppendingString:[initialValue stringValue]]; //NSInteger may not respond to stringValue?!?
[myValue stringByAppendingString:@".png"]
这就是我对 Obj-C 的理解崩溃的地方。对我来说这样的感觉应该更容易,但我仍然感到困惑。
现在,如果 initialValue 是一个值为 @"12" 的 NSString,也许它是?然后 self.value = [initialValue integerValue];
我可以用多个 stringByAppendingString 调用构建 image。对于其他语言中如此简单的事情来说似乎很乏味。
处理此类问题的最佳方法是什么?
【问题讨论】:
标签: objective-c cocoa cocoa-touch