2012-09-25 4 views
7

कोड कोई असर नहीं होना चाहिए यह संभव होना चाहिए कहीं भी यह मूल रूप से कभी कभी संकलक चेतावनीवहाँ है कुछ उद्देश्य-सी में कोई सेशन आपरेशन कि हम सिर्फ का उपयोग ब्रेकपाइंट सेट करने के लिए कर सकते हैं

उत्पन्न नहीं करता है मैं एनएसएएसएसर्ट करना चाहते हैं। हालांकि, एनएसएएसएसर्ट की बजाय, मैं कभी-कभी मेरा {} मेरा स्वयं करना चाहता हूं। इस तरह मैं ब्रेक पॉइंट

वर्तमान में यह आसानी से सेट या सेट कर सकता हूं।

if ([email protected]"Business") 
{ 
    error=nil; //Some code for breakpoint. I want something that do nothing actually. 
} 

ऐसा ही होता है कि मेरे पास एक चर नामक एक चर है जिसे मैं अब उपयोग नहीं करूँगा। लेकिन एक अच्छा विकल्प क्या होगा

मैंने भी कोशिश की [शून्य दान नहीं]; लेकिन उसमें संकलक त्रुटि मिली।

उत्तर

7

इस प्रयास करें:

while (false); 

अन्य संभावनाओं, if (false) या बस एक अकेला अर्धविराम ; के साथ एक लाइन की तरह होते हैं, लेकिन उन मामलों में निष्पादन अगले निर्देश पर रुक जाता है, संभवतः क्योंकि संकलक बस कोड के उन खाली बिट्स दूर करता है। while का उपयोग करने का लाभ यह है कि उस लाइन पर निष्पादन बंद हो जाएगा (मान लीजिए कि आप वहां एक ब्रेकपॉइंट डालते हैं)।

+0

सभी महान जवाब हैं। यह सबसे अच्छा है। –

+0

'अगर (झूठी) 'और';' ठीक काम करेगा यदि हम कोई अनुकूलन नहीं करते हैं? –

+1

@ BenC.R.Leggiero मैं निश्चित रूप से कुछ नहीं कह सकता, लेकिन इसे आजमाने में लंबा समय नहीं लगेगा। – Caleb

2

आप 2 तारों की तुलना सीधे नहीं करते हैं; कोशिश करें [एनएसएसटींग isEqualToString:]

3

आप ब्रेकपॉइंट की स्थिति दे सकते हैं, विकल्प और कमांड दबा सकते हैं और ब्रेकपॉइंट पर क्लिक कर सकते हैं, आपको पॉप-अप प्राप्त करना चाहिए। 'शर्त' फील्ड में यो

[entityName isEqualToString:@"Business"] 

(ध्यान दें कि आप -isEqualToString: नहीं == साथ तार की तुलना करनी चाहिए, के रूप में बाद के तार अपने आप में संकेत दिए गए वर्ण तुलना नहीं।)

की तरह कुछ दर्ज कर सकते हैं तक ब्रेकपॉइंट में स्थिति का उपयोग करके आपको किसी भी कथन की आवश्यकता नहीं है, और बिना किसी प्रतिकृति के चेक को सक्षम और अक्षम भी कर सकते हैं। वहाँ एक बहुत अधिक आप की तरह है यह स्वचालित रूप से संदेश लॉग इन करें या एक डीबगर आदेश आदि

+0

मैं उन चीज़ों को चाहता हूं जो मैं कोड में स्पष्ट रूप से देख सकता हूं। –

+0

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

+0

असल में आप जो भी करते हैं वह भी समझ में आता है। बस स्थिति दोहराएं। हम्म ... स्रोत नियंत्रण। मुझे सीखना है कि इसका उपयोग कैसे करें। –

0

चलाने आप उपयोग कर सकते __asm int 3;

if ([entityName isEqualToString:@"Business"]) { 
    __asm int 3; 
} 

CFInternal.h से ब्रेकप्वाइंट सेटिंग्स के साथ क्या कर सकते हैं है।

#if defined(__ppc__) || defined(__ppc64__) 
#define HALT asm __volatile__("trap") 
#elif defined(__i386__) || defined(__x86_64__) 
#if defined(__GNUC__) 
#define HALT asm __volatile__("int3") 
#elif defined(_MSC_VER) 
#define HALT __asm int 3; 
#else 
#error Compiler not supported 
#endif 
#endif 
if ([entityName isEqualToString:@"Business"]) { 
    HALT; 
} 
+0

__asm ​​int 3 क्या करता है? कोई सेशन नहीं अगर यह सिर्फ रोक रहा है तो मैं इसे ब्रेक पॉइंट द्वारा करना चाहता हूं। –

+1

यह ब्रेकपॉइंट इंटरप्ट को कॉल करेगा। –

3

सी में, आप एक नहीं सेशन अनुदेश बस एक लाइन में अकेले अर्धविराम डाल कर सकते हैं:

if (TRUE) { 
    ; // Neutral operation 
} 

ऑब्जेक्टिव-सी आप एक ही कर सकता है में, बात अपने कार्यक्रम बंद हो जाता है अगली पंक्ति से पहले, आप यहाँ देख सकते हैं:

enter image description here

+0

उत्कृष्ट टिप। मैं कोड को स्वयं-दस्तावेज बनाने के लिए टिप्पणी के साथ ऐसी पंक्ति डालना चाहता हूं कि "इस बिंदु पर कोई कोड आवश्यक नहीं है"। –

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

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