بروتوكولات موضوعي-C محاكاة تحذيرات مترجم العائد "الافتراضية وظائف؟

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

سؤال

في الهدف-C، أود أن إجبار الفئات المشتقة لتنفيذ واجهة معينة دون توفير تطبيق الافتراضي (التنفيذ في الفئة الأصل).

وأنا أفهم أن بروتوكولات يمكن استخدامها لهذا، وأعتقد أنني أفهم كيفية استخدام البروتوكولات، ولكن يبدو أنا في عداد المفقودين شيء ...

ولقد تعريف الطبقة الرئيسي، والمستمدة عدة فئات الطفل من الوالدين. جميع الفئات الطفل تتوافق مع بروتوكول الذي يتطلب تنفيذ myMethod.

وأود أن تكرار خلال حالات الأطفال، مشيرا لهم عن طريق الأم الفائقة، داعيا myMethod في كل منها.

والمترجم - ليس من المستغرب - يحذر من أن الوالد قد لا تستجيب لmyMethod

.

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

ما أنا في عداد المفقودين؟

والشكر

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

المحلول

وهذه ليست الطريقة التي من المفترض بروتوكولات لاستخدامها. بروتوكول <م> هو واجهة دون تنفيذ. إذا كانت هناك فئة لتتوافق مع بروتوكول (من الطبقة الديك على ما يبدو لا)، فإنه يحتاج إلى تنفيذ طرق أو ستحصل على التحذير. ما تريد القيام به هو الحصول على جميع الفئات التي تقوم بتنفيذ الواقع بروتوكول تعلن أنها تتفق مع ذلك، وبدلا من الرجوع إليها بهذا الاسم الفئة الأصل، أشير إليها بوصفها id<ProtocolNameHere>. هذا يعلن إلى أنهم كائنات تتفق مع هذا البروتوكول.

نصائح أخرى

وأنا ألاحظ الكثير من الاهتمام في البروتوكولات، وكيفية عملها. لسوء الحظ، هناك الكثير من الدروس مضللة عليها.

تحقق من بلدي تعليمي <م> <وأ href = "http://jonsterling.github.com/2009/09/12/inheritance-or-protocols.html" يختلط = "نوفولو noreferrer" عنوان = "الميراث أو بروتوكولات؟ "> الميراث أو بروتوكولات؟ على كيفية عمل بروتوكولات، وعندما لاستخدامها بدلا من الميراث. وشملت هو الكثير من التعليمات البرمجية، ومناقشة كيفية بروتوكولات يمكن استخدامها بدلا من فئات على النحو نظائرها-C الهدف لفئة مجردة من لغات أخرى. حظا سعيدا في تطوير الخاص بك!

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