programing

iOS 개발 : 장치에서 메모리 부족 경고를 유발하려면 어떻게해야합니까?

nasanasas 2020. 9. 17. 07:59
반응형

iOS 개발 : 장치에서 메모리 부족 경고를 유발하려면 어떻게해야합니까?


메모리 부족 상태에서 앱 기능을 잘 테스트하고 싶지만 테스트하기가 어렵습니다. 앱이 시뮬레이터가 아닌 기기에서 실행 중일 때 내 뷰에서 didReceiveMemoryWarning 메서드를 트리거하는 메모리 부족 경고를 어떻게 유도 할 수 있습니까? 또는 이러한 가능한 조건에서 앱을 테스트 할 수있는 방법은 무엇입니까?

시뮬레이터를 사용할 수없는 이유는 앱이 Game Center를 사용하고 시뮬레이터에서 초대가 작동하지 않기 때문입니다.


장치에서 테스트하려면 메모리를 해제하지 않고 주기적으로 대량의 메모리를 할당하는 코드를 추가하십시오 (예 : 의도적으로 누출). 이 작업은 별도의 스레드에서 수행하거나 타이머에 대한 응답으로 수행하거나 애플리케이션의 동작을 테스트하고 관찰하는 데 가장 적합한 메커니즘을 사용할 수 있습니다.

이 앱을 쉽게 재사용하거나 여러 애플리케이션으로 테스트하려는 경우 유사한 작업을 수행하고 백그라운드에서 실행되도록 설계된 별도의 앱을 만들 수도 있습니다.


private 메서드를 호출 할 수 있습니다 .

[[UIApplication sharedApplication] performSelector:@selector(_performMemoryWarning)];

디버그에서만 사용하는 것을 잊지 마십시오. 그렇지 않으면 앱이 거부됩니다.


iOS 시뮬레이터의 Simulate Memory Warning메뉴 항목을 사용하면 메모리 경고를 시뮬레이션 할 수 있습니다.


기기를 사용하여 메뉴 항목을 사용합니다. 기기-> 메모리 경고 시뮬레이션.

Xcode의 앱에서 Instruments를 사용하려면 제품-> 프로필 메뉴 항목을 사용하십시오.


Swift에서 Enzo Tran의 답변다시 작성 했습니다.

UIControl().sendAction(Selector(("_performMemoryWarning")), to: UIApplication.shared, for: nil)

그것을 호출하는 메뉴 명령이 있습니다.

Hardware > Simulate Memory Warning 시뮬레이터에서.


@ChikabuZ를 신속한 3으로 변환했습니다.

UIControl().sendAction(Selector(("_performMemoryWarning")), to: UIApplication.shared, for: nil)

어떤 이유로 든 누군가가 Swift 4에서 이것을 시도한다면 1.2GB의 램을 할당하는 방법이 있습니다.

let d = Data.init(repeating: 100, count: 1200000000)
  • 다른 앱에서 경고 알림을 트리거하는 데 유용합니다.

어떤 이유로 든 누군가가 Swift 3에서 이것을 시도한다면 1.2GB의 램을 할당하는 방법이 있습니다.

   for i in 0...1200 {
      var p: [UnsafeMutableRawPointer] = []
      var allocatedMB = 0
      p.append(malloc(1048576))
      memset(p[allocatedMB], 0, 1048576);
      allocatedMB += 1;
   }

스위프트 4 :

UIApplication.shared.perform (Selector (( "_ performMemoryWarning")))

이벤트 / 알림에 대한 응답으로 위를 실행할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/4717138/ios-development-how-can-i-induce-low-memory-warnings-on-device

반응형