Иногда бывают случаи, когда становится необходимым реализовать доступ к переменной через ее имя, а не напрямую.
Зачем это нужно? Приведу пример.
У вас есть некое множество переменных и генератор случайных чисел, который определяет в какую именно переменную нужно положить значение. Для этого удобно было бы связать случайное число с именем переменной. Из этого следует, что нужно из имени переменной получить саму переменную.
Как получить доступ к переменной по ее имени?
Для этого я сделал небольшую надстройку над Objective-C Runtime для того, чтобы можно было одним методом получить значение переменной по ее имени или записать значение в переменную по ее имени.
Интеграния в проект:
- Подключаем к проекту 2 source-файла: ASVariableHelper.h и ASVariableHelper.m
- Если вы используете проект с ARC, то выставляем флаг компиляции для файла ASVariableHelper.m (инструкция указана в этой статье). Это необходимо из-за того, что одна используемая функция из Objective-C Runtime не работает с ARC
- Поключаем к проекту
#import "ASVariableHelper.h"
Использование:
Чтобы получить значение переменной по ее имени, используем
id outObject = [ASVariableHelper objectFromVariableName:@"_object" andTarget: self];
, где
<object> — property текущего класса
<outObject> — выходной объект
Чтобы изменить значение переменной по ее имени, используем
[ASVariableHelper setObject:newObject toVariableName:@"_object" andTarget: self];
, где
<object> — property текущего класса
<newObject> — объект с новым значением
Исходный код доступен на GitHub
Немає коментарів:
Дописати коментар