मैं एक हेडर फाइल है कि एक वर्ग इंटरफेस को परिभाषित करता है:क्या एक्सकोड में प्रति लक्ष्य एकाधिक कार्यान्वयन करना ठीक है?
// MyClass.h - included in all targets
//
@interface MyClass
+ (void) doThing;
@end
और मैं दो अलग अलग कार्यान्वयन फ़ाइलें - लक्ष्य प्रति एक।
// MyClass+targetA.m - Only included in targetA
//
@implementation MyClass
+ (void) doThing { NSLog(@"targetA"); }
@end
// MyClass+targetB.m - Only included in targetB
//
@implementation MyClass
+ (void) doThing { NSLog(@"targetB"); }
@end
- वहाँ इस दृष्टिकोण के साथ किसी भी मुद्दे हैं?
- क्या प्रत्येक लक्ष्य के व्यवहार को अनुकूलित करने के लिए कोई बेहतर या आसान तरीका है?
विधि MyClass एक ऐप की उपस्थिति को थीम करने के लिए होगा। MyClass पर कई विधियां और कई लक्ष्य
क्या ये दो कार्यान्वयन इतने जंगली रूप से अलग हैं कि वे विभिन्न स्रोत फ़ाइलों में उचित हैं? यदि नहीं, तो लक्ष्य-विशिष्ट प्रीप्रोसेसर परिभाषा के आधार पर #ifdef बेहतर विकल्प हो सकता है। यदि आप दो फाइलें रखने का फैसला करते हैं, तो भी मैं उनका नाम बदलने का सुझाव देता हूं। मैंने एक्सकोड को भ्रमित कर दिया है जब दो फाइलों का एक ही नाम है (ठीक है, लेकिन कभी-कभी संपादक में गलत प्रस्तुत करना)। – mah
@mah - दिलचस्प! आपके प्रतिक्रिया के लिए धन्येवाद। मैंने प्रीप्रोसेसर का उपयोग करने के बावजूद परिभाषित किया था क्योंकि मैंने उन्हें अतीत में भी इस्तेमाल किया था। कार्यान्वयन विभिन्न ग्राहकों के लिए एक ऐप थीम करने के लिए है, इसलिए कार्यान्वयन के बीच काफी विविधता है। नाम बदलने के बारे में महान युक्ति - हालांकि यह संभव नहीं था। – Robert
कक्षा का नाम और स्रोत फ़ाइल नाम के बीच कोई संबंध नहीं है, इसलिए निश्चित रूप से संभव है - लेकिन उन्हें सही तरीके से नाम देने के लिए सबसे अच्छा है ... जैसे MyClass_client1.m, MyClass_client2.m, आदि – mah