كيف يمكنني التخلص من "غير المستخدمة متغير" تحذير في كسكودي?
-
12-11-2019 - |
سؤال
أنا أفهم تماما لماذا غير المستخدمة متغير تحذيرات تحدث.أنا لا أريد أن قمعها بشكل عام ، لأنها مفيدة بشكل لا يصدق في معظم الحالات.ومع ذلك يجب مراعاة ما يلي (المفتعلة) رمز.
NSError *error = nil;
BOOL saved = [moc save:&error];
NSAssert1(saved, @"Dude!!1! %@!!!", error);
كسكودي التقارير التي saved
هو غير المستخدمة متغير, عندما وبطبيعة الحال ليس كذلك.وأظن أن هذا هو بسبب NSAssert1
هو الماكرو.على NS_BLOCK_ASSERTIONS
الماكرو لا تعريفها, لذلك الهدف ج تأكيدات بالتأكيد تمكين.
في حين أنه لا يضر أي شيء, أجد أنه من غير مرتب و مزعج و أريد أن قمع ذلك, ولكن أنا لست متأكدا من كيفية القيام بذلك.تعيين المتغير إلى نفسه يتخلص من مترجم تحذير, ولكن أنا أفضل أن تفعل ذلك "الحق" وسيلة إذا كان هذا الشيء موجودا.
المحلول
أنا متأكد لو انها لا تزال معتمدة في LLVM مترجم ، ولكن دول مجلس التعاون الخليجي لديها "غير المستخدمة" السمة التي يمكن استخدامها لقمع هذا التحذير:
BOOL saved __attribute__((unused)) = [moc save:&error];
بدلا من ذلك (في حالة LLVM لا يدعم أعلاه), هل يمكن تقسيم متغير في سطر منفصل ، وضمان أن متغير سيكون "تستخدم" إذا كان الماكرو يوسع أو لا:
BOOL saved = NO;
saved = [moc save:&error];
نصائح أخرى
باستخدام Xcode 4.3.2 وجدت أن هذا يبدو العمل (أقل من الكتابة)
BOOL saved __unused;
في كسكودي يمكنك تعيين تحذيرات "غير المستخدمة المتغيرات." انتقل إلى "إعدادات إنشاء" عن استهداف وتصفية مع كلمة "غير المستخدمة"
هنا هو لقطة:
أقترح عليك فقط تغيير ذلك من أجل التصحيح.بهذه الطريقة أنت لا تفوت أي شيء في الإصدار.
NSError *error = nil;
BOOL saved = [moc save:&error];
NSAssert1(saved, @"Dude!!1! %@!!!", error);
#pragma unused(saved)
في محاولة من هذا القبيل.فمن يعمل بالنسبة لي.أنها سوف تعمل من أجلك أيضا.
فقط بسيطة المحمولة طريقة للاحتفال متغير المستخدمة هي... لاستخدامه.
BOOL saved = ...;
(void)saved; // now used
قد تكون سعيدة مع سبق وصفها مترجم-ملحقات محددة ، على الرغم من.
حاول مع:__المستخدمة السمة.يعمل في كسكودي 5
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-variable"
NSUInteger abc; /// Your unused variable
#pragma clang diagnostic pop
يمكنك تعيين "لا" LLVM compliler 2.0 تحذير على "إطلاق سراح"
هذه هي الطريقة التي كنت تفعل ذلك في ج وبالتالي أيضا الهدف-C.
حتى لو لم يكن لديك تحذيرات تمكين انها دائما فكرة جيدة بمناسبة عودة قيمة صراحة تجاهلها.كما يذهب إلى إظهار المطورين الآخرين, أن يكون لديك ليس فقط نسي قيمة الإرجاع – لديك بالفعل صراحة اختارت أن تتجاهل ذلك.
(void)[moc save:&error];
تحرير:المجمعين تجاهل يلقي إلى void
, لذا فإنه لا ينبغي أن تؤثر على الأداء – انها مجرد لطيفة نظيفة الإنسان في الشرح.
جعلها تأخذ خطين.فصل الإعلان القيمة الافتراضية
BOOL enabled = NO;
// ...
BOOL enabled;
enabled = NO;