각 레벨마다 다른 컨트롤러를 사용하는 게임을 개발 중입니다. 이것은 가속도계 통해 흔들림을 검출해야하므로 그 대리인과 같이 자체를 등록 UIAccelerometer가 두 번째 대리인에게 이벤트를 보내지 않습니다.
UIAccelerometer *accel = [UIAccelerometer sharedAccelerometer];
accel.delegate = self;
accel.updateInterval = kUpdateInterval;
레벨 종료
이 제어기 dealloc'd 및 해제 얻는다. 이전에는 UIAccelerometer에서 대리자를 제외하지 않았으므로이 컨트롤러를 해제 한 후 충돌이 발생했습니다 (즉, 이제는 해제 된 개체에 이벤트를 보내고 있음). 이제 dealloc 내부에서 다음을 수행합니다.UIAccelerometer *accel = [UIAccelerometer sharedAccelerometer];
accel.delegate = nil;
모두 1 단계는 장애없이 재생됩니다. 문제는 다음 레벨로 넘어 가면 새로운 레벨 컨트롤러를 만들고 코드의 첫 번째 배치를 다시 실행합니다 (새 컨트롤러를 이제 대리자로 설정). 이 후에는 가속도계에서 전화가 걸리지 않습니다.
그렇다면 Accelerometer에 대한 응용 프로그램 당 하나의 대리인 만 허용 할 수 있습니까, 아니면 방금 누락 되었습니까? 나는 문서에서 여러 번 대리인을 설정할 수없는 것을 보지 못했습니다. 나는 Obj-C에 약간 새로운 편이지만, 위임자를 이해하는 한 너무 비 정설적이어서는 안된다.
참고 : 3.0에서는 흔들기 알림을 수신 할 수 있음을 알고 있습니다. 불행히도, 나는 그저 쉐이크에 관심이있는 모든 시간 동안 첫번째 응답자가 될 다른 뭔가가 필요합니다. 그래서 나는 그 옵션을 리펙토링 할 수 없습니다.
+1 좋은 지적. 나는 그것을 지금 시험해보고 다시보고 할 것이다. – Bdebeez
그래, 그랬어. 컨트롤러가 릴리스되었지만 (0까지) 즉시 dealloc되지 않았습니다. 따라서 제 2의 컨트롤러가 생성 될 때까지는 속성을 제외하지 않았습니다. 감사합니다. – Bdebeez