iOS 4.x向けのプロジェクトがあります。最近、Xcode 4.3.2を使ってiOS5にアップデートしています。アップルのLLVMコンパイラを使用しているときにダブルフリーエラーで毎回アプリが停止するのは不思議です。私はLLVM GCCに戻った後、正常に動作します。この2つの間に違いはありますか? コードを以下に示します。Apple LLVMコンパイラを使用したときにダブルフリーエラーが発生する
- (NSArray *)readCourselist {
NSString *path = [[self currentUserPathString] stringByAppendingPathComponent:kUserCourseListFilename];
return [NSArray arrayWithContentsOfFile:path];
}
- (NSArray *)getCourselist {
NSArray *courseRawArray = [self readCourselist];
for (NSDictionary *courseDic in courseRawArray) {
CourseModel *courseModel = [[CourseModel alloc] init];
courseModel.courseID = [[courseDic objectForKey:kKeyID] intValue];
courseModel.courseNameString = [courseDic objectForKey:kKeyTitle];
NSArray *lectureArray = [courseDic objectForKey:kKeyLecture];
for (NSDictionary *lectureDic in lectureArray) {
LectureModel *lectureModel = [[LectureModel alloc] init];
NSString *startString = [lectureDic objectForKey:kKeyStart];
if ([startString isEqualToString:@"8:00"]) {
lectureModel.lectureNumber = 1;
}
else if ([startString isEqualToString:@"9:50"]) {
lectureModel.lectureNumber = 2;
}
lectureModel.location = [lectureDic objectForKey:kKeyWhere]; //@property of location is retain
[courseModel.lectureArray addObject:lectureModel];
[lectureModel release];
}
[courseArray addObject:courseModel];
[courseModel release];
}
}
をより多くの私はそれが本当に重要
lectureModel.location = [lectureDic objectForKey:kKeyWhere];
だということが分かったトレースで。私LectureModelで 、場所は
@property (nonatomic, retain) NSString *location;
@synthesize location;
- (id)init {
location = NSLocalizedString(@"未知", nil);
}
がNSLocalizedStringを削除に従い、すべてがすべての権利作品として宣言されています。 なぜですか?
ダブルフリーはどのラインで起こりますか? – JeremyP
どのラインが重要かわかりません。それは単にxcodeの_pthread_killで停止し、これらのコードをコメントアウトすると機能します。 –