Sobes.tech
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.