2

クラスに内部の int 配列を持たせたいのですが、XCode で許可してもらえないようです。配列のサイズは初期化時に設定する必要があるため、サイズを直接インターフェイスに入れることはできません。

現時点で私は試しています:

@interface TestClass : NSObject {
  int test[];
}

しかし、それは私が許可されていないことを教えてくれます。インターフェイスでそれを参照する方法と、実装を作成するときにそれを割り当てる方法は?

やや標準的な質問で申し訳ありませんが、検索しても必要な答えが見つからないようです。

編集:配列を使用したいのは、明らかに NSArray を使用するよりもはるかに高速だからです

4

3 に答える 3

0

AC配列は、十分なサイズの生メモリバッファです。Foundation には、すべての手動の​​メモリ管理から解放される raw メモリの優れたラッパーがあります。NSMutableData

次のアプローチは、自動メモリ管理と適切なカプセル化を提供します。

@interface TestClass : NSObject

@property (nonatomic, readonly) int *testArray;
@property (nonatomic, readonly) NSUInteger testArraySize;

@end


@implementation TestClass
{
    NSMutableData *_testData;
}

- (id)initWithSize:(NSUInteger)size
{
    self = [self init];
    if (self != nil) {
        _testData = [NSMutableData dataWithLength:size];
    }
}

- (int *)testArray
{
    return [_testData mutableBytes];
}

- (NSUInteger)testArraySize
{
    return [_testData length];
}

@end

ご覧のとおり、@interface で ivar を宣言する必要はありません。

于 2013-08-12T09:57:24.997 に答える