2010-07-24 2 views
4

나는 objective-j와 프레임 워크에 새로운 것이므로 드릴 다운을 시도하고 일부 코드를 이해하려고 시도했지만 객체 (또는 구조체) CGRect로 인해 길을 잃어 가고 있습니다. 여기 Objective-J and Cappuccino and CGRect

은 전체 설명서입니다 : Cappuccino

좋아, 지금은 드릴 다운 그리고 난이 CPView 클래스의 작동 방식을 배우려고 : 이제 CPView.j

, 내가 CGRect 객체 (또는 구조)를 참조하십시오 어디서나 그리고 저는 단순히 CGRect가 정의 된 곳의 삶을 생각할 수 없습니다. 이게 어떻게 작동합니까? 나는 뭔가를 놓치고있는 것처럼 느낀다.

내가 찾은 가장 가까운 것은 CGGeometry.jCGGeometry.h이지만 아직 CGRect 구조 나 개체가 정의되어 있지 않습니다.

누군가 나를 도울 수 있습니까? CGRect 구조체 또는 객체를 어떻게 인스턴스화 할 수 있으며 정의 된 곳은 어디입니까? 무엇이 포함되어 있습니까? etc ...

CGRect를 만드는 주요 방법은 here으로 설명한 CGRectMake 함수를 사용하는 것입니다.

나는 이것이 어떻게 작동하는지 파악하지 못하고있다.

감사합니다.

업데이트 :

코드를 좀 더보고 후 : 라인 23 라인 30 라인 37, 자바 스크립트 객체의 설명처럼 좀 보이는 것 같다. 이 올바른지? 확실하지 않습니다 ... CGRect가 무엇인지 이미 알고있는 .j 파일을 번역하고 있습니다. 이것이 우리가 (CGRect) 유형 카스트와 객체를 사용할 수있는 이유입니까? CGRects는 마치 이 아니며 지금까지 사용 된 다른 객체와 같은이 아니며 이유를 알고 싶습니다.

감사합니다.

00023 #define _CGPointMake(x_, y_) { x:x_, y:y_ } 
00024 #define _CGPointMakeCopy(aPoint) _CGPointMake(aPoint.x, aPoint.y) 
00025 #define _CGPointMakeZero() _CGPointMake(0.0, 0.0) 
00026 
00027 #define _CGPointEqualToPoint(lhsPoint, rhsPoint) (lhsPoint.x == rhsPoint.x && lhsPoint.y == rhsPoint.y) 
00028 #define _CGStringFromPoint(aPoint) ("{" + aPoint.x + ", " + aPoint.y + "}") 
00029 
00030 #define _CGSizeMake(width_, height_) { width:width_, height:height_ } 
00031 #define _CGSizeMakeCopy(aSize) _CGSizeMake(aSize.width, aSize.height) 
00032 #define _CGSizeMakeZero() _CGSizeMake(0.0, 0.0) 
00033 
00034 #define _CGSizeEqualToSize(lhsSize, rhsSize) (lhsSize.width == rhsSize.width && lhsSize.height == rhsSize.height) 
00035 #define _CGStringFromSize(aSize) ("{" + aSize.width + ", " + aSize.height + "}") 
00036 
00037 #define _CGRectMake(x, y, width, height) { origin: _CGPointMake(x, y), size: _CGSizeMake(width, height) } 

답변

3

짧은 답변은 예, CGRects는 다른 카푸치노 오브젝트와 다릅니다. CGRect는 CPObject가 아니라 x, y, 너비 및 높이 멤버가있는 Javascript 객체입니다. 당신이 발견

function CGRectMake(_x, _y, _width, _height) 
{ 
    return { 
     origin: { x:_x, y:_y }, 
     size: { width: _width, height: _height } 
    }; 
} 

선언은 카푸치노 자체가 더 나은 성능을 위해 CGRectMake의 함수를 인라인하는 데 사용하는 매크로입니다 : 당신은 그런 CGRectMake와 같은 하나를 만들 때, 당신은 실제로 다음과 같이 보입니다 간단한 함수를 호출하고 . 매크로는 하루가 끝날 때 자신의 코드에 사용 된 내 보낸 CGRectMake 함수를 실제로 정의하는 데 사용됩니다. 위의 코드는 근사치입니다.