2012-10-26 2 views
0

현재 소켓 연결을 사용하여 하드웨어 장치와 통신해야하는 iOS 용 응용 프로그램을 개발 중입니다. 따라서 NSStream과 함께 Singleton Object를 사용하고 있습니다. 이 시점까지는 모두 예상대로 작동합니다.싱글 톤을 파괴하고 재구성 iOS

문제는 연결이 종료되었거나 중단 된 경우 다시 열 수 없다는 것입니다 (문서에 설명되어 있음). 내 생각은 싱글 톤을 파괴하고 그것을 재현하는 것입니다. 이 클래스의 복사본이 하나만 존재하기 때문에 Singleton Pattern을 방해해서는 안됩니다.

누구나이 문제를 해결하는 방법에 대해 알고 있습니까? 싱글 톤의 레크리에이션을 포함하지 않는 다른 솔루션은 매우 높이 평가 될 것입니다.

+5

왜 싱글 톤을 사용하고 있습니까? 당신이 싱글 톤을 파괴하고 재창조해야한다는 사실은 당신이 싱글 톤을 사용해서는 안된다는 강력한 신호입니다. – mttrb

+0

디바이스에서'plist' 파일을 사용하고 필요할 때 업데이트하려고 왜하지 않습니까? –

답변

2

장치에 대한 연결이 활성화되어 있는지 테스트하려면 왜 싱글 톤 클래스에 로직을 넣지 마십시오. 사망 한 경우 연결을 닫고 새 연결을 엽니 다. 이것은 실제로 싱글 톤을 재현하여 파괴하려고 시도하는 것과 똑같은 일이지만, 싱글 톤 패턴을 상당히 남용하지는 않습니다. 또한 싱글 톤 만이 연결을 알고 있기 때문에 커플 링을 낮게 유지하기 때문에 더 간단해야합니다.

2

싱글 톤을 파괴하지 않기 때문에 아마도 싱글 톤 클래스를 다시 열고 이전 연결을 닫거나 재설정하는 방법을 포함해야합니다.

0

변수를 한 번만 만들 수있게 해주는 싱글 톤의 핵심은 앱이 종료 될 때까지 앱을 따라 살 수 있다는 것을 의미합니다. 우리는 Lazy 로딩으로 초기화합니다. 사용되는 시점을 의미합니다. RAM으로 정적으로 할당 할 것이므로 언제든지 다시 사용할 수 있으므로이 시간을 절약 할 수 있습니다. 그래서 Singleton을 파기해서는 안됩니다.

희망 도움말.

관련 문제