الطريقة الصحيحة لاستخدام UIActionSheet مندوب؟ مؤشرات تعيينها إلى الذاكرة متطابقة

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

سؤال

وأنا باستخدام متغير actionSheet أقره actionSheet: didDismissWithButtonIndex: لمقارنة actionSheet يدعو إلى قائمة المتغيرات UIActionSheet في صفي. ويبدو أن هذا الطريق تم تصميم طريقة مندوب للتمييز بين الأحداث.

- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex {

if (actionSheet == actionSheet1) {
    switch (buttonIndex) {
        case 0:
            // Do Something
            break;
        case 1:
            // Do Something Else
            break;
        case 2:
            // Cancel
            break;
    }
}

if (actionSheet == actionSheet2) {
    switch (buttonIndex) {
        case 0:
            // Do Something
            break;
        case 1:
            // Do Something Else
            break;
        case 2:
            // Cancel
            break;
    }
}

و}

في كل مرة يتم عرض UIActionSheet، I الوك مثيل UIActionSheet لأحد المتغيرات الطبقة، تعيين خصائص العرض، عرضه، والافراج عنها .

وهذا يعمل بشكل سلس، في البداية. المشكلة هي أنه بعد تشغيل لفترة من الوقت، في نهاية المطاف كلا UIActionSheet مؤشرات (الطبقة المتغيرات actionSheet1 وactionSheet2 في المثال رمز أعلاه) في نهاية المطاف لافتا إلى نفس الذاكرة، وهذا يتوقف على ما سيحدث في وقت التشغيل، مما تسبب على حد سواء إذا كانت تصريحات في مندوب طريقة لتقييم صحيح. ليست جيدة.

والآن، إذا كان لي أن الوك كل UIActionSheet مرة واحدة فقط في المدى وتظل في الذاكرة (لا يدعون الإفراج)، وهذا لا ينبغي أن يحدث. ولكن أحاول أن يكون المحافظ هنا. هل أبل تنوي لمندوب لاستخدامها بهذه الطريقة؟

هل كانت مفيدة؟

المحلول

وعند إنشاء UIActionSheet الخاص بك، وإعطائها علامة:

actionSheet.tag = 1; // or 2 or 3 or ...

وبعد ذلك، في طريقة مندوب الخاص بك، التبديل بناء على كلمة دلالية لتحديد سلوك تلك الورقة معينة.

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