2011-01-09 2 views
1

하위 컨트롤러의 컨트롤을 소유 컨트롤러의 필드로 매핑하는 데 문제가 있습니다. 특히, 각 "컨트롤"에 대한 콘센트를 File 's Owner에 매핑했습니다. 그런 다음 Monotouch는 컨트롤러의 xib designer.cs 파일에 대한 코드를 생성하여 이러한 컨트롤을 컨트롤러 클래스의 속성으로 참조했습니다. 그러나 내 코드를 실행할 때; 컨트롤에 속성을 설정할 때 객체에 null 오류가 발생합니다. 디버거로 문제를 파헤 치다. GetNativeField는 xib 파일에서 이름으로 콘센트에 액세스하려고 할 때 null을 반환합니다.iPhone, Monotouch 및 XIB 출력 문제

누구나 이런 일이 발생하는 이유는 무엇입니까? .xib 파일과 생성 된 코드를 확인했습니다. 아울렛, 속성 및 필드 이름이 서로 일치합니다.

모든 건설적인 의견을 크게 주시면 감사하겠습니다.

감사합니다, 프랭크

답변

0

문제의 원인을 파악했습니다. 내가 스택에 컨트롤러를 밀어 된 방법이었다

using(var batteryController = new BatteryController()){ 

    navigationController.PushViewController(batteryController,true); 

} 

처분이 컨트롤러에서 호출 될 때 NIB 자원이 메모리에서 제거되는 것 같다; 이것이 문제의 원인이었습니다.

그러나 이것은 또 다른 질문을 제기합니다. 새 컨트롤러가 스택에 푸시 된 후 새 컨트롤러에서 처 리하도록 요청하지 않습니까? 목표 C에서 스택에 컨트롤러를 밀어 넣을 때; 나중에 석방하라. 그래서 내가 뭘 잘못하고 있니?

+1

MonoTouch에 가비지 수집기가있어 문서에서 언급 한 것처럼 응용 프로그램에서 참조되지 않은 리소스를 자동으로 해제합니다. - Mono에는 개발자가 소프트웨어에 집중하고 런타임에서 처리하도록 허용하는 가비지 수집기가 함께 제공됩니다 물건을 풀기 위해 필요한 부기. 이렇게하면 공통 메모리 누출을 방지하고 이러한 누출을 방지하기 위해 작성해야 할 코드의 양을 줄일 수 있습니다. 출처 : http://monotouch.net/index.php?title=Features&highlight=Garbage+collector – dalexsoto

-1

이 그림에 http://yfrog.com/f/h7faip/ 내 블로그에 또한 간단한 계산기의 그 비디오를이 시도해처럼 스페인어에있는 그것의 AppDelegate에에 콘센트를 추가해야하지만 당신은 그것에게 그것을 보면, 매우 자명 한 당신은 그것을 여기에서 볼 수있다 http://alexsoto.me/calculadora-monotouch 그것은 시작하는 것을 도와야한다 :) 이것이 도움이되기를 바란다 행운을 빌어 라 내가 무엇이든지 당신을 도울 수 있으면

편집 : 또한이 비디오를 확인할 수있다. 서브 뷰를 사용하면 영어로도 도움이 될 것입니다. http://www.alexyork.net/blog/post/Selecting-a-contact-from-the-Address-Book-with-MonoTouch.aspx

0

콘센트는 뷰가로드 된 후에 만 ​​액세스 할 수 있으며, LoadView()에서 발생하거나 UIViewController의 "View"속성에 액세스하여 콘센트에 액세스 할 수 있습니다 (뷰가 암시 적으로로드됩니다). 그 때 만 IB 콘텐츠가 구성되어 사용 가능합니다.

그래서 물건을 바꾸려면 수동으로 LoadView()으로 전화하거나보기에서 무시하거나 base.LoadView()으로 전화를 걸어 콘센트에 액세스하십시오.