У меня есть UIColor, определенный как это:Почему использование #define UIColor как CGColorRef вызывает сбои?
#define kCircleInnerShadowColor [UIColor colorWithWhite:.78 alpha:1.0]
Затем я использую это так:
CGColorRef shadowColorRef = kCircleInnerShadowColor.CGColor;
CGContextSetShadowWithColor(cxt, size, 0, shadowColorRef);
Однако это приводит к сбою BAD_ACCESS. Если я вместо этого сделаю
CGContextSetShadowWithColor(cxt, size, 0, kCircleInnerShadowColor.CGColor);
У меня нет сбоя, и он отлично работает. Что является причиной этого?
Это, по сути, «интерьер указатель» проблема (именно так, как Даниил описывает). Потенциально лучшее решение, если этот цвет используется * много *, должен иметь глобальную переменную вместо #define, чтобы избежать большого количества трафика памяти. – bbum
Как создать глобальную переменную UIColor? – Snowman
Какая линия освобождает CGColorRef? – Snowman