메쉬에 벡터와 인덱스를 저장하기위한 정점 속성 배열을 만들려고합니다. 버텍스 애트리뷰트는 vector2, vector3 및/또는 vector4로 구성 될 수 있으므로 특정 유형의 객체를 반환하는 메서드를 제한하지 않고도 모든 것을 처리하는 클래스를 만들고 싶습니다.NSMutableData에 다른 데이터 유형을 할당하는 방법
VertexAttributeArray *vertexAttributeArray = [[VertexAttributeArray alloc] init];
[vertexAttributeArray data][0] = CGRectMake(0.0, 0.0, 0.0, 0.0); //doesn't work - compiler error
[vertexAttributeArray rect][0] = CGRectMake(0.0, 0.0, 0.0, 0.0); //works fine
첫 번째 :
내 메쉬 클래스 내에서//VertexAttributeArray.h
@interface VertexAttributeArray : NSObject
{
NSMutableData *vertexData;
}
- (void *)data;
- (CGRect *)rect;
//VertexAttributeArray.m
- (id)init
{
self = [super init];
if(self)
{
vertexData = [[NSMutableData alloc] initWithLength:0];
}
return self;
}
- (void *)data
{
return [vertexData mutableBytes];
}
- (CGRect *)rect
{
return [vertexData mutableBytes];
}
- (void)dealloc
{
if(vertexData)
{
[vertexData release];
vertexData = nil;
}
[super dealloc];
}
는, 내가 좋아하는 뭔가를 호출 할 수 싶습니다 테스트, 나는 NSMutableData
의 다음 클래스 만들기 사용을 작성했습니다 메소드가 data
에 액세스하는 것이 클래스가 특정 유형의 구조체와 작동하도록 제한하지 않으므로 Xcode가 "불완전 유형 'void'을 지정할 수 없다는 경고를 던지기 때문에 선호됩니다."
다른 유형의 데이터 구조에 대해 여러 가지 방법을 사용하고 싶지 않지만 현재이 문제를 해결할 방법이 없습니다. 다른 유형에 대한 포인터를 반환하는 메소드를 사용하는 것은 매우 우아 해 보이지 않으며 흔히 사용되지 않는 (그리고 원치 않는) 코드를 많이 추가합니다.
이 문제를 해결하기 위해 불가지론 데이터 저장소를 만드는 방법이 있습니까? 버텍스, 인덱스, 법선 및 색상 등을 저장하는 메쉬 클래스가 다른 VertexAttributeArray
인 것을 선호하므로 vector2, vector3 및 vector4를 저장하는 것이 이상적입니다. 이 문제를 해결하려면 어떻게해야합니까?
멋진. 나는 그것이 사실일지도 모른다라고 생각했다. 대답 해 주셔서 감사합니다. – CaptainRedmuff