0

我有3 个 ViewControllers

这些控制器中的每一个都需要对给定的核心数据对象执行计算。

这些计算因对象类型和控制器而异。

方法是,

performTimeOperations:(Year *) // VC1
performTimeOperations:(Month *) // VC2
performTimeOperations:(Day *) // VC3

每个大约有 50 行代码。

但是他们每个人的代码变化都非常小,我真的很想传递一个ID,就像这样,

performTimeOperations:(id)

让它处理我扔给它的每一种类型的物体。

主要是因为我所做的每一次改变,我都必须在 3 个地方进行。

你会在哪里实现这个?如何?

我应该看类别吗?我也不认为这应该放在我的 appDelegate 中……但这肯定比拥有 3 个实现更好?

任何建议表示赞赏

谢谢!

努诺

4

3 回答 3

2

正如@deanWombourne 所说,您可以在对象中实现不同部分的计算。或者您可以在单一计算方法中检查对象类型(类)。这取决于你把这个方法放在哪里,你比我们更了解你的代码。也许你可以创建例如。计算器类并将计算方法放在那里。

于 2012-08-21T12:53:18.773 回答
2

为什么不让你所有的核心数据对象都继承自一个实现这个方法的通用基类呢?

即代替

Day -> NSManagedObject
Month -> NSManagedObject
Year -> NSManagedObject

你将会拥有

Day -> MyDateType -> NSManagedObject
Month -> MyDateType -> NSManagedObject
Year -> MyDateType -> NSManagedObject
于 2012-08-21T12:50:03.807 回答
0

Two options, the C way:

id doYourThing(id arg) {
   //50 lines of code on the screen
   //50 lines of code on the ...
   return anAnswer;
}

The static method way:

@interface AnAppropriateClass : NSSomething 
+ (id) doYourThing: (id) arg;
@end

@implementation AnAppropriateClass 
+ (id) doYourThing: (id) arg {
    //50 lines of code on the screen
    //50 lines of code on the ...
    return anAnswer;
}
@end

Both of these are

  1. faster than using instance methods
  2. Produce smaller binaries
  3. Have smaller runtime memory footprints
于 2012-08-21T13:18:27.120 回答