小编Joe*_*Joe的帖子

目标C中的继承问题

我创建了一个"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)

iphone xcode inheritance objective-c

6
推荐指数
2
解决办法
4015
查看次数

类引用成员指向同一类中的其他成员

我正在制作一个涉及三维坐标的图书馆,并发现三维角度的组成部分有两个名称:偏航 - 俯仰 - 滚动和航向 - 高程 - 银行

所以我做了以下(在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)

我想知道编译器是否会发现引用是不必要的,或者它是否会保留结构中的指针.

另外,有没有更好的方法为一个成员拥有两个名字?

c++ reference compiler-optimization

5
推荐指数
1
解决办法
101
查看次数