أين متغيرتي؟ ج موضوعية
-
30-09-2019 - |
سؤال
أقوم بتهيئة عرض (صورة) من خلال:
Image *myImageView = [[Image alloc]init];
myImageView.myId = randomImageNumber;
[myImageView initWithImage:myImage];
في فئة الصورة أقوم بسجل (log1) واحصل على مجموعة عشوائية. في وقت لاحق ، في نفس الفصل ، أقوم بسجل ثانٍ (log2). لماذا لا يكون لسوجي الثاني قيمة بعد الآن؟
هنا ملف تنفيذي لصورة الفصل:
@synthesize myId;
-(id) initWithImage: (UIImage *) anImage
{
NSLog(@"LOG1%d",myId);
if ((self = [super initWithImage:anImage]))
{
self.userInteractionEnabled = YES;
}
return self;
}
}
-(void)touchesBegan...
....
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"LOG2%d",myId);
}
تفرغ "Return Self" Myid الذي أعلنته في ملف الرأس والذي تم تعيينه عند التهيئة. كيف يمكنني منع ذلك؟
يبدو أن HeaderFile مثل هذا:
@interface Image : UIImageView
{
int myId;
}
@property (assign) int myId;
@end
المحلول
قم بربط الأشياء في الكود الخاص بك. لا تدعو أبداً أكثر من مرة على كائن ما ، فهذا مجرد مسامير كائنك.
تغييره إلى هذا:
Image *myImageView = [[Image alloc] initWithImage:myImage];
myImageView.myId = randomImageNumber;
هذه هي مشكلتك ، افتراضيًا عند تهيئة الفئة الفرعية NSObject
, ، يتم ضبط جميع الخصائص على 0
(أو nil
إذا كانت مؤشرات).
إذا كنت بحاجة إلى الحصول على قيمة افتراضية ل myId
ثم افعل هذا:
// Image.m
@implementation
// other code
-(id) initWithImage:(UIImage *) image
{
if (self = [super initWithImage:image])
{
self.myId = randomImageNumber;
}
return self;
}
// other code
@end
نصائح أخرى
أعتقد أنني وجدته:
https://www.google.com/maps/place/variable/@53.626739،10.025728،17z/data= !3m1!
هل يمكنك التحقق مما إذا كان هذا المتغير لك؟
أفضل فيل