Несколько проблем с преобразованием ARC в Objective-C - PullRequest
2 голосов
/ 14 октября 2011

Я пытаюсь преобразовать свой код в Objective-C ARC и получить несколько ошибок.

1:.

NSBezierPath *path = [NSBezierPath bezierPath];
CGPathApply(pathRef,  path, CGPathCallback); //error

В нем говорится: неявное преобразование указателя Objective.C в 'void *' запрещено ARC

2:.

static void CGPathCallback(void *info, const CGPathElement *element) {
NSBezierPath *path = info; //error
[…] }

В нем говорится: неявное преобразование типа указателя не Objective-C 'void *' в 'NSBezierPath *' запрещено ARC

Есть идеи, как мне решить проблемы?

1 Ответ

7 голосов
/ 14 октября 2011

Вам нужно использовать бросок с мостом . В этом случае вам просто нужен простой модификатор __bridge, например,

NSBezierPath *path = [NSBezierPath bezierPath];
CGPathApply(pathRef, (__bridge void *)path, CGPathCallback);

и

static void CGPathCallback(void *info, const CGPathElement *element) {
    NSBezierPath *path = (__bridge NSBezierPath*)info;
    ...
}
...