2011-03-14 14 views
18

मेरे पास अभी तक एक और अजीब चेतावनी है जिसे मैं जाना चाहता हूं। असल में, मेरे पास इस तरह घोषित किया गया है: @property (nonatomic, assign) int *myInt; और इस तरह सेट करें: myInt = 0;। यह कार्यान्वयन फ़ाइल में भी संश्लेषित है। मुझे उस लाइन पर एक चेतावनी मिल रही है जहां मैंने int का मूल्य निर्धारित किया है और यह कहता है कि Incompatible intiger to pointer conversion assigning to 'int *' from 'int'. इसे ठीक करने के लिए मुझे क्या करना चाहिए?'int' '' int 'से' int * 'को असाइन करने वाले पॉइंटर रूपांतरण के लिए असंगत पूर्णांक

उत्तर

55

त्रुटि संदेश में एक बड़ा संकेत है!

सी और उद्देश्य सी में, int एक आदिम डेटा प्रकार है। आपने int * लिखा है, जिसका अर्थ है "एक int के लिए सूचक", जबकि ऐसा लगता है कि आप सिर्फ एक int चाहते थे।

तो यह करने के लिए अपनी संपत्ति को बदलने:

@property (nonatomic, assign) int myInt; 

अधिक जानकारी के लिए, गूगल "सी संकेत" और आप इस तरह जानकारी प्राप्त करेंगे: http://pw1.netcom.com/~tjensen/ptr/pointers.htm

2

एक और तरीका है हल करने के लिए यह बस नहीं करने के लिए है एक सूचक की घोषणा (तारांकन ड्रॉप):

@interface ViewController : UIViewController { 
    NSUInteger myObjcInt; // unsigned (>= 0) NSObject int, yo 
} 
+0

यह एक और तरीका नहीं है - यह वही बात है जो ओकुलस ने कहा था। बीटीडब्लू, आपकी टिप्पणी ने इसे "एनएसओब्जेक्ट इंट" कहा है, जो वास्तव में एक शब्द के रूप में बहुत अधिक समझ में नहीं आता है। – Chuck

+1

टच। मैं इस पोस्ट को एनएसआईएनटेगर से संबंधित मुद्दे की खोज के दौरान पढ़ रहा था, इंटेल नहीं। जवाब पर थोड़ा बहुत जल्दी, दोस्तों। मेरी गलती। – Rob

12

हाँ, बस घोषणा से तारांकित (*) को हटा दें।

example.declare के लिए BOOL isChecked बजाय BOOL * isChecked

1

int *MyInt int के लिए एक सूचक है, int नहीं।
जैसा कि अन्य ने आपको बताया था, बस * हटाएं और आपके पास नियमित int होगा।

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