Sobes.tech
Junior — Middle

Môžete vysvetliť, čo sa rozumie pod pojmom asociatívne hodnoty v programovaní?

sobes.tech AI

Odpoveď od AI

V programovaní, najmä pri vývoji iOS s Objective-C alebo Swift, sa asociované hodnoty (associative values) vzťahujú na mechanizmus, ktorý umožňuje dynamicky pridávať vlastnosti k objektom počas behu, bez zmeny ich pôvodnej triedy.

Toto sa realizuje pomocou asociovaných objektov (associated objects) v prostredí runtime Objective-C. Napríklad, môžete "pripojiť" dodatočnú hodnotu k inštancii triedy pomocou kľúča a ukazovateľa na hodnotu. Toto je užitočné, keď chcete rozšíriť funkcionalitu existujúcich tried bez vytvárania podtried.

Príklad v Objective-C:

#import <objc/runtime.h>

static char kAssociatedObjectKey;

@implementation UIView (VlastnostNaZakázku)

- (void)setCustomProperty:(NSString *)value {
    objc_setAssociatedObject(self, &kAssociatedObjectKey, value, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}

- (NSString *)customProperty {
    return objc_getAssociatedObject(self, &kAssociatedObjectKey);
}

@end

Tu sa k objektu UIView dynamicky pridáva nová vlastnosť customProperty bez zmeny triedy UIView.