__bridge
iOSでの-ingに関するアドバイスが必要です。
以下のSSCCE1が、私が言葉で表現できるよりも問題をうまく説明してくれることを願っていますが、 avoid*
をNSMutableArray*
;に変換する方法を知る必要があります。どの__bridge
バリエーションを使用する必要がありますか(コードのコメントを参照)。
さまざまなブリッジについて読んで、私は必要__bridge_transfer
だと推測しましたが、その後、EXC_BAD_ACCESSを受け取りますaddObject:
CGPoints
最終的には、CGPath
後の配列を呼び出してもらいたいと思いCGPathApply
ます。
#import <Foundation/Foundation.h>
void _processPathElement(void* info, const CGPathElement* element)
{
NSMutableArray *array = (/* WHAT BRIDGE HERE */ NSMutableArray*) info;
switch (element->type)
{
case kCGPathElementMoveToPoint:
case kCGPathElementAddLineToPoint:
{
CGPoint point = element->points[0];
[array addObject:[NSValue valueWithCGPoint:point]];
break;
}
default:
break;
}
}
int main(int argc, char *argv[])
{
@autoreleasepool
{
//Create path
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint( path, NULL, 0, 0);
CGPathAddLineToPoint(path, NULL, 1, 0);
CGPathAddLineToPoint(path, NULL, 1, 1);
CGPathAddLineToPoint(path, NULL, 0, 1);
CGPathCloseSubpath(path);
NSMutableArray *pathPoints = [NSMutableArray array];
CGPathApply(path, &pathPoints, _processPathElement);
NSLog(@"Points:%@", pathPoints);
}
}
1:SSCCE