문제

나는 속성을 그렇게 설정하려고 노력하고 있습니다 -

- 인터페이스 :

@property (readwrite, assign) CGColorRef otherBallColor;
.

-somemethod :

CGColorRef ballColor = [UIColor colorWithRed:255.0/256.0 green:165.0/256.0 blue:239.0/256.0 alpha:1.0].CGColor;  
[self setOtherBallColor:ballColor];
.

가치에 액세스하려고 시도하는 즉시 충돌 -

- SomeotherMethod (이 경우 드로피) :

CGContextSetFillColorWithColor(context, otherBallColor);
.

하지만 "Somemethod"에있는 경우 -

CGColorRef ballColor = [UIColor blueColor].CGColor;
.

... 모두 잘 작동합니다.아무도 무슨 일이 일어나고 있는지 설명 할 수 있습니까?

많은 감사합니다 (추신, objective-c. 일반적으로 프로그래밍하지 않음)

도움이 되었습니까?

해결책

반환 된 CGColor를 유지해야하며, [UIColor Colorwith ...]는 자동으로 릴리스 된 인스턴스를 생성하므로 해당 CGColor가 해제됩니다.

이 경우에 가능하면 cgcolorref 대신 UIColor를 사용하는 것이 좋습니다.

다른 팁

늦은 답변에 대해 이야기하지만, 나는이 특별한 문제에 대한 대안적인 해결책을 가지고 있었는데, 나는 잠시 전에 달렸다.나는이 질문을 해결하기 전에 발견 했으므로 나는 두 개의 센트를 던질 것입니다.UIColorsetFill라는 인스턴스 메소드를 가지고 있으며, 이는 수신기를 현재 컨텍스트 채우기 색상으로 설정합니다.그래서 당신은 쓸 수 있습니다 :

CGContextRef myContext = UIGraphicsGetCurrentContext();
[[UIColor colorWithRed:255.0/255.0 green:165.0/255.0 
                  blue:239.0/255.0 alpha:1.0] setFill];
CGContextFillPath(myContext);
.

나는이 솔루션을 찾아내는 것을 걱정할 필요가 없거나 이후에 CGColor를 릴리스 할 필요가 없기 때문입니다.실제로 CGContextSetFillColorWithColor와 같은 핵심 그래픽 채우기 색상 설정 명령을 처리 할 필요조차 없습니다.

UICOLOR Apple Documentation .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top