كيف يمكنني التخلص من "غير المستخدمة متغير" تحذير في كسكودي?

StackOverflow https://stackoverflow.com/questions/5451123

سؤال

أنا أفهم تماما لماذا غير المستخدمة متغير تحذيرات تحدث.أنا لا أريد أن قمعها بشكل عام ، لأنها مفيدة بشكل لا يصدق في معظم الحالات.ومع ذلك يجب مراعاة ما يلي (المفتعلة) رمز.

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;

في كسكودي يمكنك تعيين تحذيرات "غير المستخدمة المتغيرات." انتقل إلى "إعدادات إنشاء" عن استهداف وتصفية مع كلمة "غير المستخدمة"

هنا هو لقطة: Builld Settings Screenshot

أقترح عليك فقط تغيير ذلك من أجل التصحيح.بهذه الطريقة أنت لا تفوت أي شيء في الإصدار.

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 تحذير على "إطلاق سراح" enter image description here

هذه هي الطريقة التي كنت تفعل ذلك في ج وبالتالي أيضا الهدف-C.

حتى لو لم يكن لديك تحذيرات تمكين انها دائما فكرة جيدة بمناسبة عودة قيمة صراحة تجاهلها.كما يذهب إلى إظهار المطورين الآخرين, أن يكون لديك ليس فقط نسي قيمة الإرجاع – لديك بالفعل صراحة اختارت أن تتجاهل ذلك.

(void)[moc save:&error];

تحرير:المجمعين تجاهل يلقي إلى void, لذا فإنه لا ينبغي أن تؤثر على الأداء – انها مجرد لطيفة نظيفة الإنسان في الشرح.

جعلها تأخذ خطين.فصل الإعلان القيمة الافتراضية

BOOL enabled = NO;

// ...

BOOL enabled;

enabled = NO;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top