사용자가 동일한 문제를 경험 한 StackOverflow에 대한 몇 가지 질문이 있습니다. 그러나 그들의 해결책 중 어느 것도 나의 경우에 맞지 않았습니다. (here 내가 읽을 수는 있지만 한 SO 몇 가지 질문에 대한 here, here 및 here를 참조하십시오 도움이 발견하지 않았습니다.) 내 경우UIButton이 ARA를 사용하여 EXC_BAD_ACCESS를 발생시키는 IBAction을 터치합니다.
을, 나는 관련 컨트롤러보기로 몇 UIButton
의가있는 NIB을 가지고 . 보기가 비교적 오래되어서 오늘까지이 버튼을 아무런 문제없이 사용할 수있었습니다. 버튼 동작과 관련이없는 몇 가지 코드를 변경 한 후에는 앱을 충돌시키는 오류가 발생하여 main()
코드에서 코드를 깨고 버튼을 클릭 할 때마다 EXC_BAD_ACCESS
오류 메시지가 표시됩니다. 내보기에.
어떻게 또는 어떻게 될 수 있습니까? 나는 실제로 거의 모든 기능 코드를 주석 처리했습니다. 특히 오늘 이전에 수정 한 코드는 오류가 발생하는 것을 막을 수 없습니다.
내 프로젝트에서 자동 참조 횟수를 사용하고 있으며 이전에이 오류를 보지 못했습니다. 또한 NIB를 수정하지 않았고 IBAction
버튼과 관련이 없으므로 원인을 알 수 없습니다. 오류를 막는 유일한 방법은 내 컨트롤러보기 헤더 파일에 정의 된 IBAction
메쏘드로 내 NIB에 내 UIButton
을 연결 해제하는 것입니다.
내 사용 사례의 유일한 "유일한"측면은 다른 하위보기 컨트롤러 내에서이보기의 하나 또는 두 개의 인스턴스를로드한다는 것입니다. 로드 된 분리 된 뷰의 인스턴스 수는 배열의 오브젝트 수에 따라 달라집니다. 아래는 이러한 뷰를 인스턴스화하고 다른 뷰의 하위 뷰로로드하는 데 사용하는 코드입니다.
//Called else where, this starts the process by creating a view that
//will load the problematic view as a sub-view either once or twice.
- (id)initWithPrimarySystemView:(SystemViewController *)svc
{
//First we create our parent, container view.
self = [super initWithNibName:@"ContainerForViewInstaniatedFromArrayObjs" bundle:nil];
if (self)
{
//Assign parent DataModel to local instance
[self setDataModel:((DataModelClass*)svc.DataModel)];
for (AnotherModel* d in DataModel.ArrayOfAnotherModels)
{
//Instantiate the SubViewController.
SubViewController* subsvc = [[SubViewController alloc]
initWithNibName:@"Subview"
bundle:nil
subviewPosition:d.Position ];
//Add the SubViewControllers view to this view.
[subsvc.view setFrame:CGRectMake((d.Position-1)*315, 0, 315, 400)];
[self.view addSubview:subsvc.view];
}
[self setDefaultFrame: CGRectMake(0, 0, 640, 400)];
}
return self;
}
이 도청 할 때 이전에, 심지어 그러나 이제 모든 UIButton
의 충돌 응용 프로그램을 관련보기에 있던 버튼으로 어떤 문제가 발생하지 않은, 완벽하게 작동합니다.
SubViewController 및 viewDidLoad
메서드의 초기화 함수에는 새 ViewController를 만들 때 추가되는 표준 자동 생성 코드 외에는 아무 것도 포함되어 있지 않습니다.
이 문제를 수정하거나 진단하려면 어떻게해야합니까?
흥미롭게도, 나는 내 책상에 도착했을 때 이것을 시도 할 것이다. 이것이 문제를 해결할 수있는 이유를 알 수 있지만 약간 혼란 스럽습니다. 나는이 메커니즘을 2 주 동안 실시했습니다. 나는 그것에 대한 하나의 문제가 없었고, 내가 꼬인 코드와 관련 코드를 가지고 있지도 않았다.당신이 말하고있는 것이 문제라면, 이것은 언제나 하나의 임의의 날에 마술처럼 문제가되지 않았던 것처럼 보입니다. 특정 상황에서 이것이 정상적으로 작동하는 데 어떤 단서가 있습니까? – RLH
고맙습니다. – RLH
최근 ARC로 업그레이드하셨습니까? 이것은 수동 참조 계산에서 누출처럼 보입니다. SubViewController를 유지하고 타이머를 사용 중이면 실행 루프를 유지하거나 UIViewAnimation을 사용하여 애니메이트 할 수도 있습니다. – iccir