से मेल नहीं खाता है, मैं ब्लॉक-आधारित एपीआई के साथ काम कर रहा हूं और एक परिदृश्य में ठोकर खा रहा हूं जहां मैं एक ब्लॉक पैरामीटर में गुजर रहा था जिसमें हस्ताक्षर था जो typedef'd पैरामीटर से मेल नहीं खाता था विधि की उम्मीद थी। मेरे आश्चर्य के लिए, कंपाइलर इस पर ध्यान नहीं दे रहा था, और ऐप क्रैश नहीं हुआ था। क्या यह अपेक्षित व्यवहार है? उदाहरण:ब्लॉक पैरामीटर पास करना जो हस्ताक्षर
typedef void(^MyBlock)();
typedef void(^MyBlockWithParam)(id param);
- (void)doWork {
MyBlockWithParam block1 = ^(id param) {
NSLog(@"block1: %@", param);
};
MyBlock block2 = ^{
NSLog(@"block2");
};
[self loadData:block1];
[self loadData:block2];
}
- (void)loadData:(MyBlockWithParam)block {
block(@"foo");
}
मुझे लगता है कि अगर आपने पहले को 'शून्य (^ MyBlockType) (शून्य) में बदल दिया है, तो आपको शिकायत मिल जाएगी। खाली '()' मतलब अनिर्दिष्ट तर्क मुझे विश्वास है। – nielsbot
हाँ, जिसने संकलक को इसके बारे में शिकायत की है। क्या आप जानते हैं कि क्या कुछ दस्तावेज है (अगर वहां है तो मैंने इसे नहीं देखा)? अगर आप उत्तर के रूप में अपनी टिप्पणी पोस्ट करना चाहते हैं तो मैं इसे स्वीकार करूंगा। धन्यवाद – chinabuffet
यकीन नहीं है - मुझे यह जानकारी किसी अन्य प्रश्न पर किसी अन्य उत्तर से मिली है :) मुझे देखने दो। – nielsbot