2016-07-16 2 views
1

내 코드 :이 EXC_BAD 액세스 오류를 제거하는 방법은 무엇입니까?

override func viewDidLoad() 
{ 
    super.viewDidLoad() 
    imagePicker.delegate = self 
    myScrollView.delegate = self 
    myScrollView.subviews.forEach({ $0.removeFromSuperview() }) 

    for i in 1...2 
    { 
     myView = UIView(frame:CGRectMake(myView.frame.origin.x,22.0,320,83)) 
     myView.tag = i 
     myScrollView.addSubview(myView) 
     myScrollView.contentSize = CGSizeMake(myScrollView.frame.size.width*2,128.0) 
    } 
} 

오류 :이 줄은 아마 정확하지

fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)

답변

1
  1. :

    myView = UIView(frame:CGRectMake(myView.frame.origin.x,22.0,320,83)) 
    

    당신은 같은 줄에 myView을 사용하는 당신 그것을 인스턴스화하십시오. 이 줄을 호출하기 전에 myView을 검사하면 nil 일 수 있습니다.

  2. 대부분 myScrollView 또는 imagePicker은 암시 적으로 포장 된 옵션 @IBOutletnil입니다. 이 값을 사용하기 전에이 값을 검사하십시오 (print 문을 삽입하거나 중단 점을 추가 한 다음 디버거에서 값을 검사하여 검사하십시오). 이들 중 하나가 nil인지 확인하십시오. 이 nil 수 있습니다 이유의 측면에서

    은 가장 일반적인 두 가지 문제가 있습니다 : 당신이 인터페이스 빌더에서 @IBOutlet 후크 무시하는 경우

    • 콘센트가 nil 수 있습니다. 이는 IB의 스크롤보기에 대한 콘센트를 확인하여 확인할 수 있습니다. 연결되지 않음

      enter image description here

      :

      enter image description here

      또는

    • 또한 빠르게 경우 왼쪽 여백에있는 콘센트 커넥터 옆에있는 콘센트에 연결

      에보고하여 확인할 수 있습니다

    • tra가있는 경우 콘센트에 nil이있을 수도 있습니다. 이 장면을 프로그래밍 방식으로 지정하지만 잘못 (예 : 스토리 보드보다는 클래스에서이 장면을 인스턴스화).

+0

내가 확인 한 출구 --- 어떤 콘센트가 연결되어 있지 나는이 줄에 오류가 발생하고 – nandinibm

+0

연결되어 myView.tag = 내가 – nandinibm

+0

OK, 당신은 출구가 매여 말을하는지 너무 IB에서, 그러나'viewDidLoad'에서 콘센트는'nil'으로 보입니까? 그렇다면 뷰 컨트롤러를 인스턴스화하는 방법이 문제가 될 수 있습니다 (두 번째 요점). 뷰 컨트롤러를 어떻게 인스턴스화 했습니까? – Rob

관련 문제