سؤال

اقترح أن أستخدم هذا الخط من التعليمات البرمجية لاستدعاء صورة من مجلد الموارد / حزمة المشروع. أرى أيضا أنه يستخدم تماما مثل هذا على العديد من دروس المواقع المختلفة.

NSBundle *mb=[NSBundle mainBundle];


NSString *fp=[mb pathForResource:@"topimage" ofType:@"PNG"];


NSImage *image=[NSImage initWithContentsOfFile:fp];

ومع ذلك، أتلقى التحذير التالي:

nsimage قد لا يستجيب ل + interwithcontentsoffile +

يوضح وثائق NSIMAGE أن initwithcontentsoffile في الواقع طريقة يجب أن تعمل. ما قد أكون في عداد المفقودين هنا؟

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

المحلول

أنت في عداد المفقودين +alloc

NSImage* image = [[NSImage alloc] initWithContentsOfFile:fp];

تستطيع ايضا استخذام +imageNamed:, ، الذي يجلب الصور من حزمة الخاص بك الرئيسية.

NSImage* image = [NSImage imageNamed:@"topImage.png"];

نصائح أخرى

initWithContentsOfFile: هي طريقة مثيل، ولكنك ترسل تلك الرسالة إلى فئة NSIMAGE. تحتاج إلى إرسالها إلى مثيل - على وجه التحديد، مثيل مخصص حديثا.

هذا هو المكان alloc يأتي في. إنها طريقة فئة تخصيص مثيل، والتي ترسلها فورا init… رسالة (كما أظهر دارين).

لا تنس أن تصدر المثيل عند الانتهاء منه. أنا عموما autorelase المثال مباشرة بعد تسريقها؛ بعد ذلك، ستطلق الكاكاو المثال بالنسبة لي في الوقت المناسب. انظر دليل برمجة إدارة الذاكرة للكاكاو للمزيد من المعلومات.

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