如何创建结构的 class 扩展?
How to create a class extension of a struct?
我正在处理很多 GLKmatrix4
元素。这些元素是在 GLKit
.
上声明的结构
有一次我想按行-列顺序获取这些元素的字符串表示形式。
如果这些元素是对象,我会创建一个 class 扩展,如下所示:
-(NSString *)getString {
NSMutableString *string = [NSMutableString string];
[string appendString:[self formatString:self.m00]];
[string appendString:[self formatString:self.m01]];
[string appendString:[self formatString:self.m02]];
[string appendString:[self formatString:self.m03]];
[string appendString:[self formatString:self.m10]];
[string appendString:[self formatString:self.m11]];
[string appendString:[self formatString:self.m12]];
[string appendString:[self formatString:self.m13]];
[string appendString:[self formatString:self.m20]];
[string appendString:[self formatString:self.m21]];
[string appendString:[self formatString:self.m22]];
[string appendString:[self formatString:self.m23]];
[string appendString:[self formatString:self.m30]];
[string appendString:[self formatString:self.m31]];
[string appendString:[self formatString:self.m32]];
[string appendString:[self formatString:self.m33]];
[string appendString:@"\n"];
return self;
}
- (NSString *)formatString:(float)value {
return [NSString stringWithFormat:@"%.6f ", value];
}
但 GLKMatrix4
是一个结构。我该怎么做?
没有结构的扩展或类别这样的东西。它们是普通的旧 C 结构。如果你看看 apple 做了什么,通常它使用 C 函数来处理它们的结构。例如,CGPointFromString
或 CGRectMake
。您可以使用相同的方法,也可以将所有这些函数封装在 class 中。
我正在处理很多 GLKmatrix4
元素。这些元素是在 GLKit
.
有一次我想按行-列顺序获取这些元素的字符串表示形式。
如果这些元素是对象,我会创建一个 class 扩展,如下所示:
-(NSString *)getString {
NSMutableString *string = [NSMutableString string];
[string appendString:[self formatString:self.m00]];
[string appendString:[self formatString:self.m01]];
[string appendString:[self formatString:self.m02]];
[string appendString:[self formatString:self.m03]];
[string appendString:[self formatString:self.m10]];
[string appendString:[self formatString:self.m11]];
[string appendString:[self formatString:self.m12]];
[string appendString:[self formatString:self.m13]];
[string appendString:[self formatString:self.m20]];
[string appendString:[self formatString:self.m21]];
[string appendString:[self formatString:self.m22]];
[string appendString:[self formatString:self.m23]];
[string appendString:[self formatString:self.m30]];
[string appendString:[self formatString:self.m31]];
[string appendString:[self formatString:self.m32]];
[string appendString:[self formatString:self.m33]];
[string appendString:@"\n"];
return self;
}
- (NSString *)formatString:(float)value {
return [NSString stringWithFormat:@"%.6f ", value];
}
但 GLKMatrix4
是一个结构。我该怎么做?
没有结构的扩展或类别这样的东西。它们是普通的旧 C 结构。如果你看看 apple 做了什么,通常它使用 C 函数来处理它们的结构。例如,CGPointFromString
或 CGRectMake
。您可以使用相同的方法,也可以将所有这些函数封装在 class 中。