Junior — Middle
Biztosítható-e a biztonság az Objective-C-ben az példányváltozók bejelentésekor?
sobes.tech MI
Válasz az MI-től
Objective-C-ben az példányváltozók deklarálásának biztonsága nem garantált a nyelv által. Az példányváltozók (instance variables) egyszerűen a osztály mezői, és a hozzáférés biztonsága attól függ, hogyan szervezed a hozzáférést és a szinkronizációt.
Ha több szálas környezetben dolgozol, a példányváltozókhoz való hozzáférés biztonságának biztosításához szinkronizációs mechanizmusokat kell használnod, például @synchronized, NSLock vagy más eszközöket.
Példa az @synchronized használatára a hozzáférés védelmére egy változóhoz:
@interface MyClass : NSObject {
NSInteger _counter;
}
- (void)incrementCounter;
- (NSInteger)getCounter;
@end
@implementation MyClass
- (void)incrementCounter {
@synchronized(self) {
_counter++;
}
}
- (NSInteger)getCounter {
@synchronized(self) {
return _counter;
}
}
@end
Így az példányváltozók deklarálásának biztonsága nem automatikus, hanem a hozzáférés helyes kezelése révén érhető el.