Junior — Middle
Може ли да се гарантира безопасността при обявяване на променливи на екземпляр в Objective-C?
sobes.tech AI
Отговор от AI
В Objective-C безопасността при обявяване на променливи от тип екземпляр (instance variables) не е гарантирана от езика сам по себе си. Променливите от тип екземпляр са просто полета на класа, и безопасността при достъпа до тях зависи от начина, по който организирате достъпа и синхронизацията.
Ако работите в многонишково средище, за да осигурите безопасност при достъпа до променливите от тип екземпляр, трябва да използвате механизми за синхронизация като @synchronized, NSLock или други средства.
Пример за използване на @synchronized за защита на достъпа до променлива:
@interface MyClass : NSObject {
NSInteger _counter;
}
- (void)incrementCounter;
- (NSInteger)getCounter;
@end
@implementation MyClass
- (void)incrementCounter {
@synchronized(self) {
_counter++;
}
}
- (NSInteger)getCounter {
@synchronized(self) {
return _counter;
}
}
@end
Така, безопасността при обявяване на променливи от тип екземпляр не е автоматична, а се постига чрез правилно управление на достъпа до тях.