سؤال

أنا جديد تمامًا في Objective-C ، وبينما كنت أتعلم ، كنت أحاول إنشاء برنامجي الخاص. الفكرة هل يوجد متغير (أو كائن؟) totalSave, ، طريقة addToTotalSaved مع معلمة saveAmount, وكائنات متعددة (كل كائن يعطي المعلمة saveAmount قيمة مختلفة) عند التصرف عليها سوف تسبب addToTotalSaved ليتم إرسال "مرسلة" ، أو أيا كان المصطلحات ، إلى totalSave لهذا السبب. totalSave يزيد بالمبلغ الصحيح.

بادئ ذي بدء ، إذا كانت فكرتي عن كيفية عمل الكود خاطئة تمامًا ، فهل يمكنك تقديم طريقة أفضل؟ ... أشعر أن هذا لا ينبغي أن يكون معقدًا - لكن سؤالي هو ما ينبغي totalSave يكون؟ int؟ nsinteger؟ شيء؟

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

المحلول

يبدو الأمر كما لو كنت قد جعلته معقدًا بشكل مفرط. من الواضح أن الفكرة ليست في الحقيقة "هناك متغير اسمه totalSave"نظرًا لأن المستخدم قد يهتم أقل بالمكان الذي تقوم فيه بتخزينه ، ومن بقية رسالتك ، فأنت لا تهتم بالفعل بكيفية تخزينه.

ومع ذلك ، من أجل جعل هذا الأمر أكثر واقعية ، دعونا نفكر في حالة "النتيجة الإجمالية" التي قد تضيفها أجزاء عديدة من البرنامج. هناك بضعة طرق قد تتبعها. في أي حال ، من المحتمل أن يكون لديك بعض الكائنات في مكان ما يتتبع النتيجة. سوف نسميها Game الكائن ، ولكن يمكن أن يكون Level أو أيا كان.

لذلك هناك ثلاث مدارس تفكير كبيرة: يمكنك تمرير هذا Game اعتراض حول الجميع ، يمكنك الحصول على ملف Game Singleton ، أو يمكنك استخدام الإخطارات. كل من هذه الأساليب لها مزايا ، وربما يكون أي شخص تختاره جيدًا لبرنامج بسيط (شخصياً ، لبرنامج بسيط للغاية ، كنت أستخدم مفردة).

في المخطط الأول ، في مرحلة ما من البرنامج ، تقوم بإنشاء أ Game كائن لديه بعض addToScore: طريقة. يمكنك تعيين هذا الكائن كخاصية على كل كائن آخر يحتاج إلى تحديث النتيجة. كل من هذه المكالمات [self.game addToScore:value]. هذا النهج يجعل اختبار الوحدة أكثر بساطة ، ولكن يمكن أن يكون مملاً بعض الشيء للتنفيذ.

في المخطط الثاني ، لديك بعض شاركت Singleton +[Game sharedGame]. عندما تريد تحديث النتيجة ، اتصل [[Game sharedGame] addToScore:value]. هذا عموما الستيرة للتنفيذ.

في المخطط الثالث ، لديك بعض الأشياء (Game) الذي يستخدم NSNotificationCenter لمراقبة بعض الإخطار. عندما تريد تحديث النتيجة ، يمكنك فقط نشر إشعار يتضمن المبلغ المطلوب إضافة قاموس المستخدم الخاص به. هذا أمر رائع للحفاظ على الأمور مفصولًا للغاية ، ولكن مرة أخرى يمكن أن تكون مملة بعض الشيء في الحالة الأكثر المعتاد.

ولكن كما يلاحظ chuck ، فمن المحتمل أنك تفكر في هذا الأمر ، وقد ترغب في العودة والعمل من خلال بعض البرامج التعليمية للحصول على شعور أفضل بكيفية عمل هذه الأشياء عادة. نوع الموقف الذي تصفه ليس معقدًا للغاية.

نصائح أخرى

يبدو أنك تريد فئة ، تحتوي على قيمة عدد صحيح مع المجموع. ثم تريد إعطاء هذه الفئة A addTotal (Somenum).

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

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