سؤال

أقوم بتهيئة عرض (صورة) من خلال:

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!

هل يمكنك التحقق مما إذا كان هذا المتغير لك؟

أفضل فيل

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