Junior — Middle
Kas on võimalik tagada turvalisus, deklareerides näidismuutujad Objective-C-s?
sobes.tech AI
Vastus AI-lt
Objective-C-s, näitelause muutujate deklaratsiooni turvalisus ei ole keelest endast garantii. Näitelause muutujad (instance variables) on lihtsalt klassi väljad ning juurdepääsu turvalisus sõltub sellest, kuidas korraldate juurdepääsu ja sünkroniseerimist.
Kui töötate mitme niidiga keskkonnas, peate juurdepääsu turvalisuse tagamiseks kasutama sünkroniseerimismehhanisme, nagu @synchronized, NSLock või muud vahendid.
Näide @synchronized kasutamisest muutuja juurdepääsu kaitsmiseks:
@interface MyClass : NSObject {
NSInteger _counter;
}
- (void)incrementCounter;
- (NSInteger)getCounter;
@end
@implementation MyClass
- (void)incrementCounter {
@synchronized(self) {
_counter++;
}
}
- (NSInteger)getCounter {
@synchronized(self) {
return _counter;
}
}
@end
Seega, näitelause muutujate deklaratsiooni turvalisus ei ole automaatselt tagatud, vaid saavutatakse õige juurdepääsuhalduse kaudu.