четвер, 4 квітня 2013 р.

Устанавливаем доступ к переменной по ее имени

Иногда бывают случаи, когда становится необходимым реализовать доступ к переменной через ее имя, а не напрямую.

Зачем это нужно? Приведу пример.

У вас есть некое множество переменных и генератор случайных чисел, который определяет в какую именно переменную нужно положить значение. Для этого удобно было бы связать случайное число с именем переменной. Из этого следует, что нужно из имени переменной получить саму переменную.

Как получить доступ к переменной по ее имени?

Для этого я сделал небольшую надстройку над Objective-C Runtime для того, чтобы можно было одним методом получить значение переменной по ее имени или записать значение в переменную по ее имени.

Интеграния в проект:

  1. Подключаем к проекту 2 source-файла: ASVariableHelper.h и ASVariableHelper.m
  2. Если вы используете проект с ARC, то выставляем флаг компиляции для файла ASVariableHelper.m (инструкция указана в этой статье). Это необходимо из-за того, что одна используемая функция из Objective-C Runtime не работает с ARC
  3. Поключаем к проекту
    #import "ASVariableHelper.h"
    

 

Использование:

Чтобы получить значение переменной по ее имени, используем

id outObject = [ASVariableHelper objectFromVariableName:@"_object" andTarget: self];

, где

<object>  — property текущего класса

<outObject> — выходной объект

 

Чтобы изменить значение переменной по ее имени, используем

[ASVariableHelper setObject:newObject toVariableName:@"_object" andTarget: self];

, где

<object>  — property текущего класса

<newObject> — объект с новым значением

 

Исходный код доступен на GitHub

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments