0
Google 앱에서 우리는 PDF 파일을 생성합니다. 그래서 우리는 올바른 값으로 모든 자리을 대체 템플릿으로 HTML 파일을 사용하고 String
에이 템플릿을로드 :큰 문자열 메모리 문제가있는 String.replacingOccurrences
let template = Bundle.main.path(forResource: “reportTemplate”, ofType: "html")
do {
var htmlTemplate = try String(contentsOfFile: template!)
htmlTemplate = htmlTemplate.replacingOccurrences(of: “#LOGO#”, with: logoBase64)
htmlTemplate = htmlTemplate.replacingOccurrences(of: “#TITLE#”, with: “PDF FILE“)
htmlTemplate = htmlTemplate.replacingOccurrences(of: “#IMAGE1#”, with: reportImageBase64)
htmlTemplate = htmlTemplate.replacingOccurrences(of: “#IMAGE2#”, with: reportImageBase64)
//…
} catch {
print(“\(error)“)
}
는 PDF 따라서 이미지의 숫자를 포함 할 수 있습니다 우리가 Base64로 이러한 이미지를 변환으로 문자열이 더 큰 성장 .
그러면 생성 코드를 실행할 때 메모리가 높아질 때 메모리에이 문제가 발생한다는 것을 알 수 있습니다. 그리고 우리는 NSMallocException을 가리키는 임의의 충돌보고를받습니다.
이 문제를 방지하려면 어떤 제안을 원하십니까?
감사합니다, 우리는이를 시도하고 시간이가'replacingOccurrences'을 사용하는 것보다 더 긴 과정을 완료하는 데 걸리는 것 같다. 우리는 코드를 다시 작성하여 "임시 html 파일"을 생성 한 다음 이미지의 "절대 경로"를 "src"로 사용합니다. 지금까지는 정상적으로 작동하고 메모리 사용량은 정상 수준입니다. – SquareBox