我创建了一个"SDMutableGrid"类,以便我可以使用网格.它只是NSMutableArray的一个子节点,它包含一个数字,用于等于网格中行数的数组.
目前,该程序在它真正启动之前退出并且它似乎是因为为NSMutableArray定义的方法不知何故不适用于SDMutableGrid,任何人都知道为什么?
这是.h:
#import <Foundation/Foundation.h>
#import "SDDimensions.h"
@interface SDMutableGrid : NSMutableArray {
SDDimensions dimensions;
}
@property (nonatomic) SDDimensions dimensions;
- (id)initWithDimensions:(SDDimensions)newDimensions;
- (void)addObject:(id)anObject toRow:(NSUInteger)row;
@end
Run Code Online (Sandbox Code Playgroud)
这是.m:
#import "SDMutableGrid.h"
@implementation SDMutableGrid
@synthesize dimensions;
- (void)setDimensions:(SDDimensions)newDimensions {
if (newDimensions.width < dimensions.width) {
NSMutableArray *anArray;
NSRange aRange = NSMakeRange(newDimensions.width, dimensions.width - newDimensions.width);
for (NSUInteger i = 0; i < MIN(dimensions.height,newDimensions.height); i++) {
anArray = [self objectAtIndex:i];
[anArray removeObjectsInRange:aRange];
}
}
dimensions.width = newDimensions.width;
if (newDimensions.height > dimensions.height) {
for (NSUInteger i = dimensions.height; …Run Code Online (Sandbox Code Playgroud) 我正在制作一个涉及三维坐标的图书馆,并发现三维角度的组成部分有两个名称:偏航 - 俯仰 - 滚动和航向 - 高程 - 银行
所以我做了以下(在c ++ 11中完成):
struct Angle {
float heading;
float elevation;
float bank;
float &yaw = heading;
float &pitch = elevation;
float &roll = bank;
// Some Constructors (copy and assignment have to be made manually)
}
Run Code Online (Sandbox Code Playgroud)
这有利于保持两个名称方案之间的符号相当.例如:
Angle angle;
rotate(angle.yaw); // this is equivalent to rotate(angle.heading)
Run Code Online (Sandbox Code Playgroud)
我想知道编译器是否会发现引用是不必要的,或者它是否会保留结构中的指针.
另外,有没有更好的方法为一个成员拥有两个名字?