我有 3个ViewControllers 。
这些控制器中的每一个都需要对给定的核心数据对象执行计算。
这些计算因对象类型和控制器而异。
方法是,
performTimeOperations:(Year *) // VC1
performTimeOperations:(Month *) // VC2
performTimeOperations:(Day *) // VC3
每个代码大约有50行代码。
但是每个代码的代码变化都很小,我真的想传递一个ID,就像这样,
performTimeOperations:(id)
让它处理我抛出的每一种物体。
主要是因为我所做的每一项改变,都必须在3个地方进行。
你会在哪里实现这个?怎么样?
我应该查看类别吗?我也不认为这应该放在我的appDelegate中...但它肯定会比有3个实现更好的地方吗?
感谢任何建议
谢谢!
努诺
答案 0 :(得分:2)
为什么不让所有核心数据对象都从实现此方法的公共基类继承?
即。而不是
Day -> NSManagedObject
Month -> NSManagedObject
Year -> NSManagedObject
你会有
Day -> MyDateType -> NSManagedObject
Month -> MyDateType -> NSManagedObject
Year -> MyDateType -> NSManagedObject
答案 1 :(得分:2)
你可以在对象中实现不同的计算部分,如@deanWombourne所说。或者您可以在单个计算方法中检查对象类型(类)。这取决于你在哪里放置这种方法,你比我们更了解你的代码。也许你可以创造例如。计算器类和那里的计算方法。
答案 2 :(得分:0)
两种选择,C方式:
id doYourThing(id arg) {
//50 lines of code on the screen
//50 lines of code on the ...
return anAnswer;
}
静态方法方式:
@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
这两个都是