programing

iOS 개발:장치에서 메모리 부족 경고를 발생시키는 방법은 무엇입니까?

javamemo 2023. 8. 23. 21:34
반응형

iOS 개발:장치에서 메모리 부족 경고를 발생시키는 방법은 무엇입니까?

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

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

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

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

디버깅 시에만 사용해야 합니다. 그렇지 않으면 앱이 거부됩니다.

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

enter image description here

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

Xcode에서 앱에서 Instruments를 사용하려면 Product -> Profile 메뉴 항목을 사용합니다.

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

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

엔조 트랜의 답변을 스위프트로 다시 작성했습니다.

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

장치에서 테스트하려면 대용량 메모리를 확보하지 않고 주기적으로 할당하는 코드를 추가하기만 하면 됩니다(즉, 의도적인 누수).이 작업은 별도의 스레드에서 수행하거나 타이머에 응답하거나 응용 프로그램의 동작을 테스트하고 관찰할 수 있는 메커니즘을 사용하여 수행할 수 있습니다.

여러 응용프로그램을 사용하여 쉽게 재사용하거나 테스트하려면 유사한 작업을 수행하고 백그라운드에서 실행되도록 설계된 별도의 응용프로그램을 만들 수도 있습니다.

@ChikabuZ를 swift 3으로 변환:

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

호출할 메뉴 명령이 있습니다.

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

어떤 이유로든 Swift 5에서 이 작업을 수행하려는 경우, 1.2GB의 RAM을 할당하는 방법은 다음과 같습니다.

for _ 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")))

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

    Button(action: {
        UIApplication.shared.perform(Selector(("_performMemoryWarning")))
    }, label: {
        Image(systemName: "memorychip")
    })

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

반응형