2011-10-20 15 views
11

मैंने अपने ऐप में संदेश सिंक्रनाइज़ करने के लिए ट्विटर-ओथ-आईफ़ोन का उपयोग किया। आईओएस 4 में यह ठीक है।
आईओएस 5 में अपग्रेड करने के बाद, 'उत्पाद'> 'विश्लेषण' का चयन करें, और कुछ चेतावनियां प्राप्त करें।तर्क त्रुटि: '&' का बायां ऑपरेंड एक कचरा मूल्य

में NSData + Base64.m, यह चेतावनी है 'के बाईं संकार्य' & enter image description here

संहिताओं यहाँ 'एक कचरा मूल्य है':

if(ixinbuf == 4) { 
ixinbuf = 0; 
outbuf [0] = (inbuf[0] << 2) | ((inbuf[1] & 0x30) >> 4); 
outbuf [1] = ((inbuf[1] & 0x0F) << 4) | ((inbuf[2] & 0x3C) >> 2); 
outbuf [2] = ((inbuf[2] & 0x03) << 6) | (inbuf[3] & 0x3F); 

for(i = 0; i < ctcharsinbuf; i++) 
    [mutableData appendBytes:&outbuf[i] length:1]; 
} 

और दूसरी देखते हैं त्रुटि संदेश: error

क्षमा करें मैं कोई नहीं हूँ उपाध्यक्ष और इन समस्याओं के बारे में कोई सुराग नहीं है।
क्या आप इसे ठीक करने में मेरी सहायता करेंगे?
कई धन्यवाद!

संपादित ------------
तर्क पाश स्क्रीनशॉट:

मृत ImageShack लिंक

पूर्ण कोड्स को हटाने: https://github.com/bengottlieb/Twitter-OAuth-iPhone/blob/master/Twitter+OAuth/MGTwitterEngine/NSData+Base64.m

धन्यवाद कोई सुझाव!

+0

संदेश पर क्लिक करें और जहां कचरा मूल्य से आता है यह तुम्हें दिखाता हूँ। (यदि आपको अभी भी सहायता चाहिए तो एक स्क्रीनशॉट पोस्ट करें।) – nschum

उत्तर

22

से बचने यह एक खाली चार सरणी inbuf आरंभ द्वारा:

unsigned char inbuf[4] = {}; 
unsigned char outbuf[3]; 
2

ओह, बहुत अच्छा।

क्या बजना आप यहाँ कह रहा है कि, कुछ बहुत ही विशेष परिस्थितियों में, आप कभी नहीं inbuf[1] आरंभ हो सकती है। मेरा मानना ​​है कि इस इनपुट जो की तरह कुछ देखा हो सकता है:

a= 

एक और बड़ा मुद्दा यहाँ बताया जा रहा है - inbuf और outbuf के आकार लगा दिया जाता था। char inbuf[4], outbuf[3] होना चाहिए, इसके विपरीत नहीं।

+0

धन्यवाद @ डस्कवफ। मैंने लाइन 35 को 'हस्ताक्षरित चार इनबफ [3], आउटबफ [4]; से बदल दिया है; 'हस्ताक्षर किए गए चार इनबफ [4], आउटबफ [3];' पीले चेतावनी गायब हो गई (महान!)। लेकिन तर्क त्रुटियों को अभी भी प्रदर्शित किया गया है। कोई और संकेत? – Jimi

0

आप एक अगर बयान सुनिश्चित करना है कि inbuf[x] कुछ महत्व है में यह

if (sizeof(inbuf[1]) > 0x1) 
    outbuf [0] = (inbuf[0] > 4); 
if (sizeof(inbuf[2]) > 0x1) 
    outbuf [1] = ((inbuf[1] & 0x0F) > 2); 
if (sizeof(inbuf[3]) > 0x1) 
    outbuf [2] = ((inbuf[2] & 0x03)

मुझे यकीन है कि हालांकि अगर यह "सबूत मूर्ख" नहीं कर रहा हूँ जोड़ सकते हैं।

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