2010-04-29 9 views
2

저는 iphone에서 새롭습니다. avAudio 플레이어에서 노래를 재생하기 위해 플래그 변수를 사용합니다. 모든 노래는 플래그 변수로 적절하게 전환되었습니다. 우리는 탭 막대에 두 개의 탭이 있습니다. 탭 곡 정보 쇼. 그 플래그 변수를 사용하면 노래 정보를 노래와 동기화합니다. 그러나 노래 정보 탭의 플래그 값에 액세스 할 수 없습니다. 노래 정보 파일에서 전역 파일을 가져옵니다.전역 변수 문제

내가 모든 프로젝트에서 액세스 할 수있는 전역 정수를 정의하는 방법을 알려주십시오.

답변

2

변수를 응용 프로그램 위임자 .m 파일에 저장하십시오.

extern MyType* MyVar = MyVal; 

다음 .H 파일은 변수를 필요로 어디든지 것을 포함 파일 .H 앱 위임에서 다음

extern MyType* MyVar = MyVal; 

로 선언합니다.

은 또한에 전역을 배치하는 별도의 파일을 사용할 수

당신은 또한 당신의 *의 _prefix.h 파일에 통근을 배치 할 수 있습니다 -. 나는 개인적으로 그 일을 같이 해달라고하지만.

+1

랩핑되지 않은 전역 변수는 악조건입니다. 기술적으로는 효과가 있지만 앱이 허약해질 것입니다. – TechZen

+0

나는 생각하기도했지만, 이제는 좀 더 실용적 인 경향이 있습니다. 특정 규모의 올바른 솔루션입니다. 모든 앱이 무한히 확장되지는 않습니다. – sylvanaar

3

전역 변수는 악조건입니다. 앱의 복잡성이 커지면서 문제를 추적하는 것이 거의 불가능합니다.

이 문제를 처리 할 수있는 몇 가지 방법이 있습니다.

  1. 앱 대리인에 BOOl 속성을 만들고 앱 대리인을 참조하여 속성을 참조하십시오. 이러한 유형의 기능을 구현하는 가장 일반적인 방법입니다.
  2. 변수를 보관할 사용자 지정 단일 객체를 만듭니다. 싱글 톤을 호출하여 변수에 액세스하십시오. 일반적으로 큰 복잡한 데이터에 대해서만 이것을 사용합니다.
  3. 는 귀하의 경우에는 +[NSUserDefaults standardUserDefaults]

를 호출하여 사용자의 기본 설정 값을 저장 난 당신이 정말 사용자 데이터 대신 응용 프로그램 상태를 저장하기 위해 노력하고 있기 때문에 (3) 가장 좋은 것입니다 생각합니다. 응용 프로그램 상태 정보는 사용자 기본값에 속합니다. 앱을 이전 상태로 다시 시작하려는 경우 특히 유용합니다. 마지막으로 종료했을 때 열려 있던 뷰와 데이터를 엽니 다.