मैंने अपना खुद का ढांचा विकसित किया है जिसमें उपयोगी कक्षाएं/विधियां हैं जिनका मैं अक्सर अपने ऐप्स में उपयोग करता हूं। हाल ही में, मैंने अपनी खुद की विधियों को जोड़ने के लिए एनएसएसटींग "एनएसएसटींग + एक्सटेंशन एच/एम" के लिए कक्षा विस्तार जोड़ा है। उदाहरण:कक्षा विस्तार और ढांचे
- NSString + Extensions.h
@interface NSString (Extensions) - (NSString *)removeDiacritics; @end
- NSString + Extensions.m
#import "NSString+Extensions.h" @implementation NSString (Extensions) - (NSString *)removeDiacritics { return [[[NSString alloc] initWithData:[self dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES] encoding:NSASCIIStringEncoding] autorelease]; } @end
मैं सफलतापूर्वक अपने ढांचे को संकलित करता हूं। लेकिन जब मैं किसी भी आवेदन में इस वर्ग के विस्तार के कार्यों में से एक का उपयोग करने का प्रयास करें:
- AppDelegate.m
// CUtils is the name of the framework. CUtils.h contains #import of all header files // contained in my framework #import <CUtils/CUtils.h> @implementation AppDelegate ... - (void)applicationDidBecomeActive:(UIApplication *)application { /* Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previouslyin the background, optionally refresh the user interface. */ NSString *toto = @"Je suis une chaîne avec des caractères spéciaux"; NSLog(@"%@", toto); NSLog(@"%@", [toto removeDiacritics]); }
...
मैं निम्नलिखित त्रुटि:
2012-01-31 17: 01: 09.921 टेस्टक्विट्स [4782: 207] जी सुईस उने चायन avec des caractères SPECIAUX 2012-01-31 17: 01: ०९.९२४ TestCUtils [4782: 207] - [__ NSCFConstantString removeDiacritics]: गैर मान्यता प्राप्त चयनकर्ता
लेकिन मैं अपने वर्ग एक्सटेंशन जोड़ने अगर सीधे उदाहरण 0x340c के लिए भेजा आवेदन में (मेरे ढांचे के बाहर), यह ठीक काम करता है ...
कोई संकेत?
** संपादित करें **
के रूप में आप में से कुछ कहा है, मैं -all_load और 'अन्य लिंकर झंडे' में -ObjC विकल्पों चुके हैं, लेकिन मुद्दा बनी हुई है।
बहुत बढ़िया! यह काम करता हैं। मैंने अपने आवेदन लक्ष्य में केवल -ओबीजेसी लिंकर ध्वज जोड़ा है और यह काम कर रहा है। हालांकि हमारे पास एक सवाल है। मेरे ढांचे में, मैंने SQLite डेटाबेस को प्रबंधित करने के लिए एक कक्षा बनाई है, इसलिए मुझे libsqlite3.dylib को जोड़ने की आवश्यकता है। जब मैं इस नए लिंकर ध्वज के साथ अपने आवेदन में अपना ढांचा जोड़ता हूं, तो मेरे पास संकलन त्रुटियों की वजह से मैं libsqlite3.dylib को लिंक नहीं करता हूं, भले ही मैं इसे पहले से ही अपने ढांचे के अंदर जोड़ता हूं (पता नहीं कि मैं स्पष्ट हूं पर्याप्त)। शायद मुझे कुछ याद आ रहा है ... – Niko
यह शायद एक अलग सवाल के रूप में योग्यता प्राप्त करता है। आम तौर पर, आपको अपने आवेदन में आश्रित पुस्तकालयों को स्पष्ट रूप से लिंक करना होगा। यह अच्छा होगा अगर कस्टम फ्रेमवर्क को जोड़ने से निर्भर पुस्तकालयों में भी खींच आएगी, लेकिन मुझे नहीं लगता कि ऐसा करने का कोई तरीका है। –