这是我见过的最奇怪的错误 我正在创建一个从文本文件中加载级别的迷宫游戏,但如果文件有三行以上,它似乎会随机改变我的大多数变量。我加载一个文本文件然后遍历这些行,并根据其字母在适当的位置创建一个对象 有什么建议吗?
文字档案:
TTTTTTTTTTTTTTTTT
TTTTTTTTTTTTTTTTT
TTTTTTTTTTTTTTTTT
TTTTTRPPGPPDTTTTT
TTTTTPTPTPTPTTTTT
TTTTTPPPWPPPTTTTT
TTTTTPTPPPTPTTTTT
TTTTTPPPTPPPTTTTT
TTTTTPTPPPTPTTTTT
TTTTTUPPPPPLTTTTT
TTTTTTTTPTTTTTTTT
TTTTTTTTBTTTTTTTT
TTTTTTTTPTTTTTTTT
NSString *path = [[NSBundle mainBundle] pathForResource:@"map2c" ofType:@"txt"];
NSString *contents = [NSString stringWithContentsOfFile:path encoding:NSASCIIStringEncoding error:nil];
NSArray *lines = [contents componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"\r\n"]];
int y = 0;
for (NSString* line in lines) {
NSString* ty = @"TBGWUDLRP";
char *str = (char *)[line UTF8String];
char *str2 = (char*)[ty UTF8String];
grannyMoving = 2;
int x = str2[0];
char x2 = str2[1];
char GrannyStr = str2[2];
char wolfStr = str2[3];
char UpStr = str2[4];
char DownStr = str2[5];
char leftStr = str2[6];
char rightStr = str2[7];
char PathStr = str2[8];
y--;
maxY = y;
if (line.length) {
maxI = line.length;
for (int i = 0; i< line.length; i++) {
SKSpriteNode* tree = [SKSpriteNode spriteNodeWithImageNamed:@"tree3"];
tree.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(31, 31)];
tree.physicsBody.affectedByGravity = false;
tree.physicsBody.dynamic = NO;
tree.position = CGPointMake(64*i+20, 64*y+800);
tree.zPosition = -1* tree.position.y;
答案 0 :(得分:0)
此C字符串是指向字符串对象内部结构的指针, 它的寿命可能比字符串对象短,并且会 肯定没有更长的寿命。因此,您应该复制C 如果需要将字符串存储在其中的内存上下文之外 你使用这个属性。
要修复此问题,您必须复制UTF8String返回的字符。 This answer提供了两种解决方案。