UIActivityIndi​​catorView显示并导致两个特定视图崩溃

时间:2015-09-03 19:33:14

标签: ios objective-c uiactivityindicatorview

在我的一个与- (BOOL)prefersStatusBarHidden { return NO; } - (void)viewDidLoad { [super viewDidLoad]; self.userDefaults = [NSUserDefaults standardUserDefaults]; self.hairlineHeightConstraint.constant = 0.5f; self.hairlineDivider.backgroundColor = [UIColor colorWithWhite:0.9f alpha:1.0f]; self.title = @"Course"; [self.classroomButton setTintColor:[UIColor pxColorWithHexValue:self.passedCourse.courseColor]]; [self.classroomButton addTarget:self action:@selector(subscribeToCourse:) forControlEvents:UIControlEventTouchUpInside]; [self getAnySubscribedCourse]; if (self.subscribedCourse) { if (self.passedCourse == self.subscribedCourse) { [self.classroomButton setTitle:@"Remove from Classroom" forState:UIControlStateNormal]; self.subscribedToThisCourse = YES; } else { self.alreadySubscribed = YES; } } [self configureHeaderView]; NSError *error; if (![[self fetchedResultsController] performFetch:&error]) { NSLog(@"Unresolved error %@, %@", error, [error userInfo]); } } - (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; if (self.shareView) { CGRect frame = self.shareView.frame; CGFloat navbarHeight = self.navigationController.navigationBar.frame.size.height; CGFloat statusBarHeight = [[UIApplication sharedApplication] statusBarFrame].size.height; frame = CGRectMake(0.0f, self.tableView.contentOffset.y + statusBarHeight + navbarHeight, frame.size.width, frame.size.height); self.shareView.frame = frame; [self.view bringSubviewToFront:self.shareView]; } NSString *backText = self.navigationItem.backBarButtonItem.title; UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:backText style:UIBarButtonItemStylePlain target:nil action:nil]; [backButton setTitleTextAttributes:[[MSThemeManager currentTheme] barButtonTextDictionaryForState:UIControlStateNormal withTintColor:[UIColor pxColorWithHexValue:self.passedCourse.courseColor]] forState:UIControlStateNormal]; self.navigationItem.backBarButtonItem = backButton; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; self.navigationController.navigationBarHidden = NO; [self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:animated]; [self.tableView reloadData]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; if ([self.tableView.tableHeaderView isKindOfClass:[ParallaxCourseDetailHeaderView class]]) { ParallaxCourseDetailHeaderView *headerView = (ParallaxCourseDetailHeaderView *)self.tableView.tableHeaderView; [headerView.courseInfoAudioPlayer stop]; self.tableView.tableHeaderView = nil; } [[NSNotificationCenter defaultCenter] removeObserver:self]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } #pragma mark - HeaderView - (void)configureHeaderView { CGRect screenBound = [[UIScreen mainScreen] bounds]; CGSize screenSize = screenBound.size; CGFloat screenWidth = screenSize.width; NSDictionary *attributesDictionary = @{NSFontAttributeName : self.headerLabel.font}; CGFloat width = screenWidth - self.headerLabel.frame.origin.x - 15.0f; CGSize boundingBox = CGSizeMake(width, CGFLOAT_MAX); NSString *descriptionToBound = self.passedCourse.courseDescription; CGRect labelRect = [descriptionToBound boundingRectWithSize:boundingBox options:NSStringDrawingUsesLineFragmentOrigin attributes:attributesDictionary context:nil]; CGRect headerLabelRect = self.headerLabel.frame; CGRect tableHeaderViewRect = self.tableView.tableHeaderView.frame; CGRect dividerRect = self.hairlineDivider.frame; CGFloat heightDifference = ceilf(labelRect.size.height - headerLabelRect.size.height); tableHeaderViewRect.size.height += heightDifference; self.tableView.tableHeaderView.frame = tableHeaderViewRect; dividerRect.origin.y += heightDifference; headerLabelRect.size.width = ceil(labelRect.size.width); headerLabelRect.size.height = ceil(labelRect.size.height); headerLabelRect.origin.y = (dividerRect.origin.y - headerLabelRect.size.height) / 2; self.headerLabel.frame = headerLabelRect; CGFloat parallaxViewHeight = 280.0f; CGFloat headerHeight = parallaxViewHeight + heightDifference; ParallaxCourseDetailHeaderView *headerView = [[ParallaxCourseDetailHeaderView alloc] initWithTitleViewStyle:SWParallaxTitleViewStyleWhiteWithMask withHeight:tableHeaderViewRect.size.height headerHeight:headerHeight]; UIImage *image = [UIImage imageNaobj:self.passedCourse.headerImage]; headerView.courseImage = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; [headerView setTintColor:[UIColor whiteColor]]; headerView.isTitleViewOpaque = YES; headerView.fadeInDuration = 0.0; headerView.trackID = self.passedCourse.aboutTrackID; [headerView courseAudioIntroControl]; UIImage *headerTeacherImage = [UIImage imageNaobj:[NSString stringWithFormat:@"%@", self.passedCourse.teacher.teacherImageID]]; self.headerTeacherImage.image = headerTeacherImage; self.headerTeacherImage.layer.cornerRadius = self.headerTeacherImage.frame.size.height / 2; self.headerTeacherImage.clipsToBounds = YES; self.headerLabel.text = self.passedCourse.courseDescription; [self.headerTeacherButton setImage:headerTeacherImage forState:UIControlStateNormal]; UIView *oldHeaderView = self.tableView.tableHeaderView; oldHeaderView.frame = CGRectMake(0, 0, screenWidth, oldHeaderView.frame.size.height); self.tableView.tableHeaderView = nil; [headerView.titleView addSubview:oldHeaderView]; self.tableView.tableHeaderView = headerView; [headerView.imageContainerView setBackgroundColor:[UIColor pxColorWithHexValue:self.passedCourse.courseColor]]; headerView.title = self.passedCourse.title; headerView.subtitle = [NSString stringWithFormat:@"%lu Sessions", (unsigned long)self.passedCourse.courseObjects.count]; headerView.teacher = [NSString stringWithFormat:@"With %@", self.passedCourse.teacher.teacherName]; [headerView.titleLabel adjustCurrentFontSize]; [headerView.subtitleLabel adjustCurrentFontSize]; [headerView.teacherLabel adjustCurrentFontSize]; } #pragma mark - ScrollView - (void)scrollViewDidScroll:(UIScrollView *)scrollView { if ([self.tableView.tableHeaderView isKindOfClass:[ParallaxCourseDetailHeaderView class]]) { ParallaxCourseDetailHeaderView *headerView = (ParallaxCourseDetailHeaderView *)self.tableView.tableHeaderView; headerView.parallaxOffset = scrollView.contentOffset.y + scrollView.contentInset.top; } } 相关的视图中,我很难跟踪崩溃。有时它会立即崩溃,有时需要一些负载(返回到导航堆栈中的上一个视图,再次加载视图)。我已经通过仪器运行应用程序,虽然内存使用不断上升,但我没有看到任何泄漏。我可能会用完内存吗?我也没有看到任何内存警告。这是错误:

*** - [UIActivityIndi​​catorView release]:发送到解除分配的实例0x15f6d6aa0的消息

我没有建立任何联系,我可以看到ActivityIndi​​cator显示,然后当应用程序消失时应用程序崩溃(或者在应用程序崩溃之前它消失)。

我已经读过AFNetworking会导致这个问题,但我没有使用它。我只是使用NSURLSession。

这两个类非常相似,我已经包含了一个的加载调用,因为这个类太大而无法在这里发布。

它显示在嵌套在TabBarController中的导航控制器中:

(except the constructors)

0 个答案:

没有答案