2011-08-05 18 views
20

मैं इस त्रुटि के बारे अनगिनत पोस्ट के माध्यम से देख रहा है:।

Undefined symbols: 
"_OBJC_CLASS_$_BoxView", referenced from: 
    objc-class-ref-to-BoxView in ViewMovingViewController.o 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 

BoxViewUIView का एक उपवर्ग है, और UIKit ढांचा शामिल किया गया है BoxView.h में आयात किया गया है ।

-(void) addBoxViewAtLocation:(CGPoint)point { 
    CGRect rect; 
    rect.origin.x = point.x; 
    rect.origin.y = point.y; 
    rect.size.width = 80; 
    rect.size.width = 40; 
    BoxView *newView = [[BoxView alloc] initWithFrame:rect]; 
    newView.backgroundColor = [UIColor yellowColor]; 
    [mainView addSubview:newView]; 
} 

: ViewController

ViewController इस कोड शामिल और BoxView इस कोड में शामिल हैं:

BoxView *newView = [[BoxView alloc] initWithFrame:rect]; 

जब मैं उस लाइन में UIView को BoxView बदलने के लिए, त्रुटि दूर चला जाता है:

- (id)initWithFrame:(CGRect)frame {  
    self = [super initWithFrame:frame]; 
    if (self) { 
     // no further initialization 
    } 
    return self; 
} 

यह पंक्ति है कि इसके बाद के संस्करण कोड से जिसके कारण त्रुटि, है। क्या किसी को पता है कि मुझे यहां क्या बदलने की ज़रूरत है? मैंने इसके बारे में कई पदों को देखा है, लेकिन अधिकांश उत्तरों का कहना है कि यह लिंक संबंधित है, लेकिन मैंने बिना किसी सफलता के कुछ बक्से को टिकिंग और अनटिक करने का प्रयास किया है। मैं सोच रहा हूं कि त्रुटि मेरे कोड में है या नहीं? किसी भी सुझाव की सराहना की जाएगी!

उत्तर

42

सामान्यतः, यह तब होगा जब BoxView के लिए कोड आपके लक्ष्य में सही तरीके से संकलित नहीं किया जा रहा है।

identity editor screenshot

आप सुनिश्चित करने के लिए लक्ष्य आप का निर्माण कर रहे उसके संगत बॉक्स अपने BoxView.m कार्यान्वयन फ़ाइल के लिए जाँच की है कि जरूरत है। आपका प्रश्न बताता है कि आपने यह कोशिश की है, लेकिन यहां स्पष्टता के लिए एक स्क्रीनशॉट (एक्सकोड 4 से) है।

ए 'क्लीन एंड बिल्ड' कभी भी दर्द नहीं करता है।

+0

धन्यवाद, निश्चित रूप से स्वच्छ निर्माण की कोशिश की लेकिन BoxView.m के लिए एक टिक बॉक्स भर में नहीं आए हैं .. मैं कहाँ कि चेकबॉक्स मिलेगा? मैं बिल्ड सेटिंग्स को देख रहा हूं लेकिन इसे नहीं देख रहा हूं .. मैं एक्स-कोड, एक्स-कोड 3 के पुराने संस्करण के साथ काम कर रहा हूं, इसलिए मुझे नहीं लगता कि मेरा संस्करण आपके द्वारा भेजे गए स्क्रीनशॉट के अनुरूप है – cms

+0

ओह वास्तव में, मुझे बस यह मिला। पता नहीं है कि एक्सकोड 4 में यह मामला है लेकिन एक्सकोड 3 में आप सचमुच एमएम फ़ाइल को – cms

+1

में ड्रैग और ड्रॉप कर सकते हैं कभी-कभी जब मैं प्रोजेक्ट में फाइल जोड़ता हूं तो प्रोजेक्ट बनने पर उन्हें संकलित नहीं किया जाता है। एक्सकोड 4 में, मैं स्पष्ट रूप से उन्हें "बिल्ड चरण" -> "संकलन स्रोत" के अंतर्गत जोड़ता हूं। डिफ़ॉल्ट रूप से ये क्यों सेट नहीं होते हैं (कभी-कभी), मुझे नहीं पता। – wcochran

1

मैं सिर्फ यह जोड़ना चाहता हूं कि बेन मोशर का जवाब पूरी तरह से सही है। लेकिन लक्ष्य सेटिंग्स में फ़ाइलों को बनाने के लिए एक और तरीका है।

enter image description here

+1

एक्सकोड 7 में बहुत समान काम करता है लेकिन आप किसी दिए गए चयनित लक्ष्य के लिए 'सामान्य' टैब से 'लिंक्ड फ्रेमवर्क और लाइब्रेरीज़' तक पहुंचते हैं। – ecoe

संबंधित मुद्दे