Я был на учебе, но я просто не понимаю. Я объявляю n-строку i-var, я устанавливаю значение в методе init, а затем, когда я получаю доступ к этому ивару в более позднем методе экземпляра, он падает или ведет себя непредсказуемо.
//heres what my declaration looks like
@interface StockData : CCNode {
NSString *myPath;
NSString *myPath2;
}
-(id) init
{
if ( (self = [super init]) ){
myPath = [[NSBundle mainBundle] pathForResource:@"stocks" ofType:@"sqlite"];
myPath2 = @"test";
CCLOG(@"mypath::::%@",[myPath class]);
CCLOG(@"mypath2::::%@",[myPath2 class]);
}
return self;
}
-(void) getChunk{
CCLOG(@"mypath_getchunk::::%@",[myPath class]);//this crashes
CCLOG(@"mypath2_getchunk::::%@", [myPath2 class]);//this doesn't
....
Я использую cocos2d, и я вызываю метод getChunk в методе запланированного обновления, например:
-(void) updateOncePerSecond:(ccTime)delta{
if(!sd){
sd = [StockData initStockData];
[self addChild:sd];
}
[sd getChunk];
NSLog([sd getDate]);
}
при первом итерировании я получаю следующее:
2012-03-19 20: 33: 58.591 HelloWorld [6777: 10a03] mypath_getchunk :::: __ NSCFString
2012-03-19 20: 33: 58.591 HelloWorld [6777: 10a03] mypath2_getchunk :::: __ NSCFConstantString
во второй раз, когда он повторяется (если не происходит сбой):
2012-03-19 20: 33: 59.589 HelloWorld [6777: 10a03] mypath_getchunk :::: NSMallocBlock
2012-03-19 20: 33: 59.589 HelloWorld [6777: 10a03] mypath2_getchunk :::: __ NSCFConstantString
почему он иногда падает, а не в другой раз. Почему он превращается в маллокблок? Багги NSString, или я делаю это неправильно. другие переменные работают нормально? Как я могу заставить мою NSCFString вести себя как эта NSCFConstantString. Мне больше нравится этот, потому что он не падает. Любые советы будут высоко ценится!!!
спасибо!