Sobes.tech
Junior — Middle

Оё метавонед шарҳ диҳед, ки дар барномасозӣ маънои арзишҳои асосиативӣ чист?

sobes.tech AI

Ҷавоб аз AI

Барои барномасозӣ, махсусан дар таҳияи iOS бо Objective-C ё Swift, арзишҳои асосиатсионӣ (associative values) ба механизми ишора мекунанд, ки имкон медиҳад, ки хосиятҳоро ба объектҳо дар вақти иҷрои динамикӣ илова кардан, бе тағир додани синфи аслӣ.

Ин тавассути объектҳои асосиатсионӣ (associated objects) дар муҳити иҷроии Objective-C амалӣ мешавад. Масалан, шумо метавонед арзиши иловагӣ ба намунаи синф бо истифода аз калид ва ишора ба арзиш "замима" кунед. Ин барои васеъ кардани функсионалӣ кардани синфҳои мавҷуда бамаврид аст, бе сохтани синфҳои зер.

Масалан дар Objective-C:

#import <objc/runtime.h>

static char kAssociatedObjectKey;

@implementation UIView (ХосиятҳоиШахсӣ)

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

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

@end

Ин ҷо, ба объекти UIView хосияти нав customProperty ба таври динамик илова мешавад, бе тағир додани синфи UIView.