0

例を挙げて説明するのが最善です。

私のAudioItem.hで

#define ITEM_CAPACITY 100

typedef struct DataStruct {
    void *                          content;
    UInt32                          size;
} DataStruct;

typedef DataStruct *DataStructRef;

@interface AudioItem : NSObject
{        
    DataStructRef data;        
}

@property (assign, readwrite) DataStructRef data;

AudioItem.m @synthesize data;

-(id)initWithID:(NSString *)itemID
{
    self = [super init];        
    data->content = malloc(ITEM_CAPACITY);
    return self;
}

上記のコードはこれによく似ていますが、BAD_EXEC_ERRORが発生します。どうしてですか?NSMutableDataなどのb/cではなくCバッファを使用したい理由NSMutableDataを使用してみましたが、リアルタイムアプリケーションの速度が低下しているように感じます

4

1 に答える 1

1

dataコンテンツを設定するときにがnullポインタであるため、失敗します。

これを行う簡単な方法は次のとおりです。

enum { ITEM_CAPACITY = 100 };

typedef struct DataStruct {
    char content[ITEM_CAPACITY];
    UInt32 size;
} DataStruct;

@interface AudioItem : NSObject
{        
@private
    DataStruct data;
}

@implementation AudioItem
- (id)initWithID:(NSString *)itemID
{
    self = [super init];
    if (0 == self) return;
    data.size = ITEM_CAPACITY;
    return self;
}
于 2012-09-17T07:24:28.987 に答える