나는 환각 상태에 빠졌다고 생각합니다. 나는 Concentration-lke 게임에 끈기를 더하기 위해 노력 중이다. 나는 높은 점수를 추적하고 싶습니다. 나는이 부분적으로 오늘은 잠시 동안 일하고 있고, 이제는 모두 kablooie가되었다. (iOS 용어가 정확한 것 같다.) 자, 내 allHighScores NSMutablearray가 갑자기 CALayer가됩니다. NSKeyed Archiving을 사용하고 있습니다. allHighScores가 데이터로로드되기 전에 파일에 중단 점이 있습니다. 응용 프로그램을 단계별로 실행할 때 allHighScores가 NSMutableArray로 존재하며 다음 단계에서 갑자기 CA 계층이됩니다. 응?내 NSMutableArray가 갑자기 CALayer가됩니다.
-(id)init
{
self = [super init];
if (self) {
NSString *path = [self flipScoreArchivePath];
NSLog(@"Path is %@", path);
allHighScores = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
if (!allHighScores) {
allHighScores = [[NSMutableArray alloc] init];
}
}
return self;
}
+(FlipHighScoreStore *)sharedStore {
static FlipHighScoreStore *sharedStore = nil;
if (!sharedStore) {
sharedStore = [[super allocWithZone:nil]init];
}
return sharedStore;
}
어떻게 든 호출 NSKeyedUnarchiver는있는 CALayer 내로있는 NSMutableArray에서 내 allHighScores을 변경합니다. 나 엄청 혼란스러워.
보관 처리 지침에 retain을 추가하려고 시도했지만 도움이되지 않았습니다.
-(void)encodeWithCoder:(NSCoder *)aCoder {
[aCoder encodeObject:self.themeChosen forKey:@"themeChosen"];
[aCoder encodeInt:self.highScore forKey:@"highScore"];
[aCoder encodeInt:self.scoreStartLevel forKey:@"scoreStartLevel"];
[aCoder encodeInt:self.scoreFinishLevel forKey:@"scoreFinishLevel"];
[aCoder encodeObject:scoreDateCreated forKey:@"scoreDateCreated"];}
-(id)initWithCoder:(NSCoder *)aDecoder {
if (self) {
self.themeChosen = [aDecoder decodeObjectForKey:@"themeChosen"];
self.highScore = [aDecoder decodeIntForKey:@"highScore"];
self.scoreStartLevel = [aDecoder decodeIntForKey:@"scoreStartLevel"];
self.scoreFinishLevel = [aDecoder decodeIntForKey:@"scoreFinishLevel"];
scoreDateCreated = [aDecoder decodeObjectForKey:@"scoreDateCreated"];
}
return self;}
UPDATE :
가 여기 내 인코딩/디코딩 코드 프로그램이 충돌 "highscores.archive"파일이 이미 존재하고 저장이 다시 호출됩니다.
-(BOOL)saveHighScores {
NSString *path = [self flipScoreArchivePath];
return [NSKeyedArchiver archiveRootObject:allHighScores toFile:path];}
이 EXC_BAD_ACCESS 원인 : 그들이가 행복하게 검색하지만, 코드를 저장 - 나는 높은 점수를 보면, 응용 프로그램을 실행할 수 있습니다. 경로가 맞습니다. 어떻게 든 allHighScores는 그렇지 않습니다.
ARC를 사용하고 있습니까? – joerick
'FlipHighScore'에서 NSCoding 프로토콜을 구현하는 방법이나 클래스 이름이 무엇인지 보여줄 수 있습니까? – mbm29414
이 NSLog (@ 보관되지 않은 클래스 % @ ", NSStringFromClass ([allHighScores class]));를 시도하고 출력을 기록하십시오. – CodaFi