Макрос удобнее, так как он определен только в одном месте.
Но он все равно будет создавать новый экземпляр каждый раз, когда он используется, поскольку макрос - это просто текстовая замена для препроцессора.
Если вы хотите иметь уникальный экземпляр, вам придется использовать FOUNDATION_EXPORT
(что означает extern
).
В общедоступном файле .h объявляется следующее:
FOUNDATION_EXPORT UIColor * scarlet;
Это сообщит компилятору, что переменная scarlet
(типа UIColor
) будет существовать в какой-то момент (когда программа связана).
Таким образом, это позволит вам использовать ее.
Затем вам нужно создать эту переменную в файле .m.
Вы не можете присвоить ее значение напрямую, так как это значение времени выполнения, поэтому просто установите для него значение nil:
UIColor * scarlet = nil;
А затем в какой-то момент вашей программы (возможно, в делегате вашего приложения) установите его значение:
scarlet = [ [ UIColor ... ] retain ];
Не забудьте сохранить его, так как это глобальная переменная, которая должна существовать в течение всего времени жизни программы.
Таким образом, у вас будет только один экземпляр, доступный отовсюду.
person
Macmade
schedule
09.04.2012