2013-03-31 4 views
2

Просто из интереса ARC обрабатывает это или вам нужно освободить преобразование?Соответствует ли CGAffineTransform ARC?

UISlider *slider = [[UISlider alloc] init]; 
CGAffineTransform transform = CGAffineTransformMakeRotation (DEGREES_TO_RADIANS(90)); 
slider.transform = transform; 

Благодаря

ответ

4

Ничего, чтобы соответствовать точно. ARC - это подсчет ссылок Objective-C (управление памятью для объектов). Основными API-интерфейсами ядра являются C. CGAffineTransform - C struct. C-структуры не засчитываются, они не могут быть отправлены объектные сообщения, такие как сохранение и освобождение (они не будут компилироваться). Это означает, что структура CGAffineTransform должна быть вручную освобождена. Хорошо, вы можете создать его и использовать его в методе или функции, чтобы его время жизни было ограничено этим. В противном случае вы должны использовать его как свойство или ivar, поэтому оно будет обработано с помощью вытирания вашего экземпляра объекта.

В любом случае, пока он используется одним из этих способов, вы должны быть в порядке без каких-либо причудливых забот (если только вы не создаете много таких) Как вы можете видеть ниже, это не очень большой. ..

struct CGAffineTransform { 
    CGFloat a; 
    CGFloat b; 
    CGFloat c; 
    CGFloat d; 
    CGFloat tx; 
    CGFloat ty; 
}; 
typedef struct CGAffineTransform CGAffineTransform; 

в прямой C, или если у вас есть какой-то тяжелое использование из них, вы бы начать желание сделать таНос() (или один из его двоюродных) и свободный()

Смежные вопросы