यह कैसे चर तर्क सूचियों काम (va_list
, मानकों में ...
के रूप में देखा के साथ क्या करना है)। जब कोड सूची में सभी मान निकालने का प्रयास कर रहा है, तो उसे यह जानना होगा कि कब रुकना है (क्योंकि यह नहीं जानता कि कितने हैं)। हम सूची के अंत को "सेंटीनेल" नामक विशेष मूल्य के साथ दर्शाते हैं, जो आमतौर पर NULL
होता है। इस तरह, जब प्रसंस्करण कोड में nil
पर आता है, तो यह जानता है कि यह अंत तक पहुंच गया है। यदि आप nil
छोड़ देते हैं, तो आपको अजीब त्रुटियां मिलेंगी, क्योंकि कोड केवल स्टैक को पढ़ना जारी रखेगा, चीजों को वस्तुओं के रूप में व्याख्या करेगा, जब तक कि इसे nil
न मिले।
यह बहुत ही समान है कि क्यों सी तारों को NULL
होना चाहिए।
एक तरफ ध्यान दें के रूप में, stringWithFormat:
और इसी तरह के printf
शैली के तरीकों, एक प्रहरी की जरूरत नहीं है क्योंकि यह पता लगा लेता है कि कितने मापदंडों कितने %
संशोधक प्रारूप स्ट्रिंग में हैं के आधार पर की जरूरत है। इसलिए यदि आप @"hello, %@"
की प्रारूप स्ट्रिंग देते हैं, तो यह केवल एक अतिरिक्त तर्क की तलाश करेगा, क्योंकि केवल एक% संशोधक है।
स्रोत
2010-03-19 14:30:42
+1, लेकिन मुझे अभी भी लगता है कि एक असीसी-कला बीएसजी सिलोन भेजे गए – slf