मुझे एलएलवीएम कंपाइलर 2.0 का उपयोग करते समय एक नई त्रुटि मिल रही है, जो कि मैंने पहले नहीं किया था।प्रोटोकॉल के अनुरूप गुणों को ओवरराइड करना
एक प्रोटोकॉल DTGridViewDelegate कहा जाता है के रूप में परिभाषित मैं है
@protocol DTGridViewDelegate <UIScrollViewDelegate>
मैं एक संपत्ति delegate
on DTGridView कहा जाता है (UIScrollView का एक उपवर्ग है, जो अपने आप में एक delegate
संपत्ति है) है। यह के रूप में परिभाषित किया गया है:
@property (nonatomic, assign) IBOutlet id<DTGridViewDelegate> delegate;
अब संदेश मैं मिलता है:
DTGridView.h:116:63: error: property type 'id<DTGridViewDelegate>' is incompatible with type 'id<UIScrollViewDelegate>' inherited from 'UIScrollView'
क्योंकि मैं ने कहा था कि DTGridViewDelegate UIScrollViewDelegate के अनुरूप है, मैंने सोचा था कि इस ओवरराइड करने के लिए ठीक हो जाएगा इस संपत्ति में इस तरह, और वास्तव में यह पहला संकलक है कि सुझाव है कि कोई समस्या है।
@property (nonatomic, assign) IBOutlet id<DTGridViewDelegate, UIScrollViewDelegate> delegate;
मैं सोच रहा हूँ कि क्या यह एक संकलक मुद्दा है:
मैं इस तरह के रूप संपत्ति की घोषणा के द्वारा त्रुटि तय कर दी है?
मैंने भेड़िया की लिपि का उपयोग करके http://boredzo.org/blog/archives/2009-11-07/warnings से कठोर चेतावनियां चालू की: http://rentzsch.tumblr.com/post/237349423/hoseyifyxcodewarnings-scpt। जो शायद बताता है कि आपको चेतावनी/त्रुटि क्यों नहीं दिखाई दे रही है। –
हालांकि आप पूरी तरह से सही हैं, मैं UITableViewDelegate के बारे में भूल गया, जिसे मैंने पहली बार उस कोड पर आधारित किया था!ऐसा लगता है कि पहले तरीके से इसके लिए चेतावनी फेंकना नहीं चाहिए। साथ ही, मुझे यह अजीब लगता है कि UITableViewDelegate का कहना है कि यह NSObject के अनुरूप है जब यह UIScrollViewDelegate के अनुरूप भी है, जो स्वयं एनएसओब्जेक्ट के अनुरूप है। –
तो @ माइक अब्दुल्ला के साथ कुछ और चर्चा के बाद, यह पता चला कि मुझे कक्षा इंटरफ़ेस से पहले प्रोटोकॉल घोषणाओं को रखने की आवश्यकता है। @protocol DTGridViewDelegate यह नहीं कह रहा था कि जब तक संकलक मेरी संपत्ति घोषणा तक पहुंच गया था तब तक यह के अनुरूप था। –