متغير عالمي فئة منتظم يتم مشاركته بين مثيلات الكائن - المساعدة!

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

سؤال

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

انا اقرأ هذا:

لا يدعم الهدف C أعضاء بيانات الفئة (أي البيانات التي تشاركها جميع الكائنات من نفس الفئة) ، ومع ذلك ، يمكن محاكاةها من خلال استخدام المعدل الثابت. على سبيل المثال ، سيؤدي الإعلان عن متغير عدد int ثابت في ملف تنفيذ فئة الموظف إلى مشاركة جميع كائنات الموظف مع متغير عدد صحيح واحد يسمى Count.

لكن يبدو أنني انتهى بي الأمر بهذه الوظيفة دون محاولة ... ولا أريدها!

السيناريو هو أن لدي فئة من UiimageView التي أعلن فيها متغيرًا عالميًا (أقل من خط implementation الخاص بي) لحساب حدث معين واستخدامه في طرقي الجديدة.

@implementation UIImageView (Draggable)    
int touchesCount = 0;    
// methods ...

كل شيء يعمل بشكل جيد إذا كان لديّ uiimageview واحد. ومع ذلك ، عندما أقوم بإنشاء وإضافة مثيل ثانٍ من UiimageView ، يتم مشاركة هذا المتغير العد هذا بين السلوكين غير المتوقعين.

الشكل قد يكون من المناسب إظهار كيف أقوم بإنشاء الكائنات:

UIImageView *myImageView = [[UIImageView alloc] initWithFrame:myImageRect]; 
UIImageView *myImageView2 = [[UIImageView alloc] initWithFrame:myImageRect];
// ... (create, manipulate and set 2 images to the 2 views)
[self.view addSubview:myImageView];
[self.view addSubview:myImageView2];

بخلاف ذلك ، أي اقتراحات حول المكان الذي قد أخطأ فيه؟

شكرًا!

يحرر: لتوضيح أكثر قليلاً ما أفعله مع العرضين ، فإن الذات في هذه الحالة هي ViewController.

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

المحلول

ما تبحث عنه هو متغيرات المثيل ، ولكن لا يمكن للفئات إضافة تلك إلى واجهةتفاحة:

لاحظ أن الفئة لا يمكن أن تعلن متغيرات مثيل إضافية للفئة ؛ ويشمل الأساليب فقط.

يجب أن تستخدم ميراث في حين أن:

@interface MyView : UIImageView {
    int touchesCount;
}
// ...
@end
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top