2010-05-24 7 views
5

मैं अपने मिश्रित सी ++/ओबीजेसी परियोजना में कुछ प्रकार की अग्रेषण करना चाहता हूं।ओबीजेसी चयनकर्ता के रूप में एक सी ++ विधि का उपयोग करना?

मेरा तर्क सी ++ में है, और मैं एक विधि प्रदान करना चाहता हूं जो एक सी ++ ऑब्जेक्ट इंस्टेंस से संबंधित है जो ओबीजेसी के चयनकर्ता के रूप में है। क्या इसे करने का कोई तरीका है?

मुख्य रूप से सवाल यह है कि, किसी भी चयनकर्ता में नकली सी ++ विधि के लिए वैसे भी है, ओबीजेसी को देने के लिए और उसे वापस बुलाया जाना चाहिए?

अग्रिम धन्यवाद, अनोइड।

उत्तर

3

सी ++ विधि के लिए चयनकर्ता प्राप्त करना असंभव है क्योंकि इन्हें उद्देश्य-सी रनटाइम द्वारा प्रबंधित नहीं किया जाता है। आप, हालाँकि:

  • एक कॉलबैक लागू करने के लिए एक सामान्य सी ++ समारोह सूचक का प्रयोग करें
  • या: (एक वर्ग विधि सबसे अच्छा होगा) एक ऑब्जेक्टिव-सी विधि अपना सी ++ विधि करने के लिए कॉल रैप करने के लिए। आप इस फ़ंक्शन के लिए चयनकर्ता का उपयोग कर सकते हैं।
0

आप एक ऑब्जेक्टिव-सी प्रॉक्सी वस्तु में सी ++ वस्तु लपेट सकता है:

@interface MyObjCClass: NSObject { 
    MyCPPClass *thing; 
} 
-(int)foo; 
@end 

@implementation MyObjCClass { 

    -(id)init { 
    if (self = [super init]) { 
     thing = new MyCPPClass(); 
    } 
    return self; 
    } 

    -(void)dealloc { 
    delete thing; // It's been a long time since I last did C++; I may have the incorrect syntax here 
    [super init]; 
    } 

    -(int)foo { 
    return thing->foo(); 
    } 
} 
@end 
संबंधित मुद्दे