Sobes.tech
Junior — Middle

Objective-C da o'zgaruvchilarni e'lon qilishda xavfsizlikni kafolatlash mumkinmi?

sobes.tech AI

AIdan javob

Objective-C da, o'zgaruvchilarni e'lon qilishda xavfsizlik til tomonidan avtomatik ta'minlanmaydi. Instans o'zgaruvchilari (instance variables) faqat sinf maydonlari bo'lib, ularga kirish xavfsizligi kirish va sinxronizatsiya qanday tashkil etilganiga bog'liq.

Agar siz ko'p ipli muhitda ishlayotgan bo'lsangiz, instans o'zgaruvchilarga kirishni xavfsiz qilish uchun @synchronized, NSLock yoki boshqa vositalardan foydalanishingiz kerak.

O'zgaruvchiga kirishni himoya qilish uchun @synchronized dan foydalanish misoli:

@interface MyClass : NSObject {
    NSInteger _counter;
}
- (void)incrementCounter;
- (NSInteger)getCounter;
@end

@implementation MyClass
- (void)incrementCounter {
    @synchronized(self) {
        _counter++;
    }
}
- (NSInteger)getCounter {
    @synchronized(self) {
        return _counter;
    }
}
@end

Shunday qilib, instans o'zgaruvchilarini e'lon qilishda xavfsizlik avtomatik ta'minlanmaydi, balki ularga kirishni to'g'ri boshqarish orqali erishiladi.