मैं एनएसएलओजी() जैसे किसी फ़ंक्शन या निर्देश लिखना चाहता हूं जो कि किसी प्रकार का चर, प्राइमेटिव और ऑब्जेक्ट लेता है। उस समारोह में मैं उनको अलग करना चाहता हूं।उद्देश्य-सी: यह जांचने के लिए कि कोई चर एक ऑब्जेक्ट है, एक स्ट्रक्चर या अन्य आदिम
मुझे पता है कि यह वस्तुओं के लिए काम करता है:
- (void)test:(id)object {
if ([object isKindOfClass:[NSString class]])
...
लेकिन मैं structs या यहाँ तक कि पूर्णांक या तैरता से वस्तुओं कैसे भेद है। कुछ ऐसा:
"isKindOfStruct:CGRect" or "isInt"
उदाहरण के लिए?
क्या यह संभव है? मैंने सोचा था कि आप सब कुछ NSLog (@ "...", ऑब्जेक्ट्स, इन्ट्स, structs) को भेज सकते हैं? यह संभव होना चाहिए?
किसी भी मदद के लिए धन्यवाद!
संपादित
मेरे अंतिम लक्ष्य बहुरूपता किसी तरह लागू करने के लिए है।
मैं अपने समारोह कॉल करने के लिए सक्षम होना चाहते हैं:
MY_FUNCTION(int)
MY_FUNCTION(CGRect)
MY_FUNCTION(NSString *)
...
or [self MYFUNCTION:int]...
और MY_FUNCTION में
-(void)MYFUNCTION:(???)value {
if ([value isKindOf:int])
...
else if ([value isKindOf:CGRect])
...
else if ([value isKindOfClass:[NSString class]])
...
}
मुझे पता है कि isKindOf मौजूद नहीं है और तुम भी पुरातन पर ऐसी विधियों प्रदर्शन नहीं कर सकते । मैं भी "???" के बारे में निश्चित नहीं हूँ फ़ंक्शन हेडर में सामान्य "प्रकार" का सामान्य प्रकार।
क्या यह संभव है?
Type Encodings at Apple के बारे में अधिक isKindOf मौजूद है। isKindOfClass जांचता है कि कोई वर्ग सदस्य या सबक्लास है, और क्या MemberOfClass जांचता है कि कोई कक्षा * बिल्कुल * एक प्रकार का वर्ग है या नहीं। https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html –