2013-05-03 3 views
0

viewDidLoad에서 arc4random을 호출하여 임의의 숫자를 얻는 iphone 용 애플리케이션을 개발 중입니다. 내 문제는 응용 프로그램이 시작될 때마다 arc4random에서 같은 번호를 가져옵니다. 나는 아이폰 장치에서 응용 프로그램을 테스트하고 장치 터치 스크린에서 응용 프로그램을 시작할 때이 동작을 보았다고 지적해야합니다. xcode에서 장치에서 응용 프로그램을 실행하면 다른 난수가 표시됩니다.arc4random은 항상 앱 시작시 동일한 초기 값을 반환합니다.

도움이나 조언을 보내 주시면 감사하겠습니다. 감사.

+2

'arc4random'은 자동으로 시드해야합니다. 이것이 명시 적 시드 함수가없는 이유입니다. 사실, 당신은 결코이 행동을 보지 말아야합니다. 코드를 게시 할 수 있습니까? –

+0

코드 완성도는 "int selected_book = (arc4random() % numberOfBooks) +1"입니다. (numberOfBooks는 값이 66 인 int입니다) –

+0

이 코드는 앱이 시작될 때만 실행됩니까? 응용 프로그램이 종료되지 않고 백그라운드에서 실행되는 경우 응용 프로그램 : didFinishLaunching : (예를 들어) 이후에 호출되지 않지만 Xcode는 실행하기 전에 강제 종료됩니다. –

답변

2

arc4random 시드를 할 필요가 없으며 전화 할 때마다 동일한 결과가 반환되지 않아야합니다.

내 의견으로는 앱이 포 그라운드로 갈 때마다 코드가 실행되지 않는 것 같습니다. 홈 버튼을 누르면 앱이 기본적으로 종료되지 않습니다. 배경을 입력하고 다시 아이콘을 누르면 다시 시작됩니다.

코드가 viewDidLoad 안에 있으면 한 번만 호출되므로 변수가 업데이트되지 않고 검사 할 때마다 동일한 값이 포함됩니다. Xcode에서 실행하면 매번 앱이 완전히 종료되고 예상되는 동작을 얻게됩니다.

viewWillAppear: 또는 viewDidAppear:에 코드를 넣어야하므로 뷰가 처음로드 될 때보기가 아닌 화면에 표시 될 때마다 호출됩니다.

관련 문제