2011-09-23 7 views
1

CGContextRef가 실제 객체인지 확인하는 것이 더 좋을까요? 이제 경로를 추가하고 싶을 때마다 컨텍스트를 지정해야합니다. 말하기가 훨씬 더 좋지 않겠습니까? [context addPath : myPath]; 대신 CGContextAddPath (context, myPath);CGContextRef가 객체가 아닌 이유는 무엇입니까?

구조체입니까? 여기 거래가 있습니까? 누구든지 자세히 설명합니까?

+0

CoreGrahics는 C 언어로 작성되었으며 주위에 Objective-C 레이어가 없습니다. 그래서 C와 각각의 CG에 오신 것을 환영합니다. Ref는 포인터 일뿐입니다. – Tom

+1

UICezierPath, UIColor를 사용할 때,'[UIColor setFill]','[UIBezierPath setClip]','[UIBezierPath fill]', ........과 같은 문맥 연산에 내장 함수를 사용할 수 있습니다. –

답변

4

프로그래머의 관점에서 보면 더 쉬울 수도 있지만, C에있는 이유 중 일부는 성능을위한 것입니다. 그래픽 집약적 인 코드를 작성하고 렌더링 시간 문제 (거의 언제나)가 중요 할 때 마지막으로하고 싶은 일은 많은 임시 객체를 할당하는 것입니다. 가독성/유지 보수성을위한 성능은 절충점입니다.

Martin Ullrich가 말한 것처럼 Core Graphics의 일부를 둘러싼 Objective-C wrapper가 있지만 Objective-C를 사용하기 전에 "Under the hood"에 대해 알아 보는 것이 훨씬 낫습니다. 더 쉬울 수도 있지만 약간 느린).

BTW 내가 말하는이 느림은 많은 그림을 그리는 경우에만 실제로 문제이며 FPS/응답 성을 매우 좋게 유지 (또는 필요)하고 싶습니다. 예를 들어, 수백 개의 모양과 선을 그릴 경우 CG를 직접 사용하고 싶을 것입니다. Obj-C 래퍼를 사용하면 약간의 모양/이미지/텍스트 만 그릴 수 있습니다. 성능에 미치는 영향은 무시할 수 있습니다.

관련 문제