2011-12-21 2 views
0

Qt Cocos2dからiOS cocos2dに移植しています。Objective-C++を最小限の労力で言語として使用していますが、移植性の高いC++クラスにNSMutableArrayをラッピングしています。私のクラスは、私は、この行NSMutableArrayがC++クラスにラップされています

にEXC_BAD_SIGNALが供給していQList.mm

QList.h

#ifndef QLIST_H 
#define QLIST_H 

#import <Foundation/Foundation.h> 

class QList { 
    NSMutableArray* List; 

public: 
    QList(); 
    ~QList(); 
    void append(id); 
    id at (int i); 
    int size(); 
    bool isEmpty(); 
    id takeLast(); 
    id last(); 
    void prepend(id); 
    id takeAt(int i); 
    id takeFirst(); 
    void clear(); 
}; 

#endif 

#ifndef QLIST_MM 
#define QLIST_MM 

#import "QList.h" 

QList::QList() { 
    List = [[NSMutableArray alloc] init]; 
} 
QList::~QList() { 
    [List autorelease]; 
    List = nil; 
} 
void QList::append(id object) { 
    [List addObject:object]; 
} 

id QList::at(int i) { 
    return [List objectAtIndex:i]; 
} 

int QList::size() { 
    return [List count]; 
} 

bool QList::isEmpty() { 
    if ([List count] == 0) 
     return true; 
    return false; 
} 

id QList::takeLast() { 
    id temp = [List lastObject]; 
    [List removeLastObject]; 
    return temp; 
} 

id QList::last() { 
    return [List lastObject]; 
} 

void QList::prepend(id object) { 
    [List insertObject:object atIndex:0]; 
} 

id QList::takeAt(int i) { 
    id temp = [List objectAtIndex:i]; 
    [List removeObjectAtIndex:i]; 
    return temp; 
} 

id QList::takeFirst() { 
    return takeAt(0); 
} 

void QList::clear() { 
    [List removeAllObjects]; 

} 

#endif 

です

return [List count]; 

誰も私を助けてもらえ、私はずっと、事前に感謝し、それを感謝:)

+0

問題はこの行にあります ai_uni t.playerP = this; 私はので、私はそれをアンコメントすることができ、後で時間までそれをコメントアウトし、それはそれをアクセスしようとしていた:) 感謝!、あなたは、このコードのアドバイスを持っている場合、私に知らせて:P – shbli

+0

アドバイス/警告:コードが暗黙的に 'QList'オブジェクトをコピーしていないことを確認するか、コピーコンストラクタでretainを呼び出すことなく' List'を解放することになります。 – Joe

+0

アドバイスありがとう、実際には、問題を引き起こしているので、実際にはデストラクタメソッド〜QListのコードを削除しています。QListを使用した後にリリースと呼ばれる関数を追加して手動で解放します。 – shbli

答えて

0

これでは問題はありません、問題は、私はまでそれをコメントアウトして、この行に

ai_unit.playerP = this; 

ました私はそれをコメントをつけることができたので、それにアクセスしようとしていました:)ありがとう!このコードのアドバイスがあれば、私に教えてください:P

関連する問題