{"id":900,"date":"2026-02-11T11:05:59","date_gmt":"2026-02-11T03:05:59","guid":{"rendered":"https:\/\/www.ixriver.com\/?p=900"},"modified":"2026-02-11T11:05:59","modified_gmt":"2026-02-11T03:05:59","slug":"ios-%e5%86%85%e5%ad%98%e7%ae%a1%e7%90%86","status":"publish","type":"post","link":"https:\/\/ixriver.com\/?p=900","title":{"rendered":"iOS \u5185\u5b58\u7ba1\u7406"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_65 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title \" >\u76ee\u5f55<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/ixriver.com\/?p=900\/#iOS_%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86\" title=\"iOS \u5185\u5b58\u7ba1\u7406\">iOS \u5185\u5b58\u7ba1\u7406<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/ixriver.com\/?p=900\/#1_%E5%8E%9F%E7%90%86\" title=\"1 \u539f\u7406\">1 \u539f\u7406<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/ixriver.com\/?p=900\/#11_%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98\" title=\"1.1 \u865a\u62df\u5185\u5b58\">1.1 \u865a\u62df\u5185\u5b58<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/ixriver.com\/?p=900\/#12_%E7%89%A9%E7%90%86%E5%86%85%E5%AD%98\" title=\"1.2 \u7269\u7406\u5185\u5b58\">1.2 \u7269\u7406\u5185\u5b58<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/ixriver.com\/?p=900\/#121_%E5%AD%98%E5%82%A8%E5%99%A8%E7%9A%84%E5%B1%82%E6%AC%A1%E7%BB%93%E6%9E%84\" title=\"1.2.1 \u5b58\u50a8\u5668\u7684\u5c42\u6b21\u7ed3\u6784\">1.2.1 \u5b58\u50a8\u5668\u7684\u5c42\u6b21\u7ed3\u6784<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/ixriver.com\/?p=900\/#122_iOS%E7%89%A9%E7%90%86%E5%86%85%E5%AD%98\" title=\"1.2.2 iOS\u7269\u7406\u5185\u5b58\">1.2.2 iOS\u7269\u7406\u5185\u5b58<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/ixriver.com\/?p=900\/#123_macOS%E7%89%A9%E7%90%86%E5%86%85%E5%AD%98\" title=\"1.2.3 macOS\u7269\u7406\u5185\u5b58\">1.2.3 macOS\u7269\u7406\u5185\u5b58<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/ixriver.com\/?p=900\/#124_Windows%E7%89%A9%E7%90%86%E5%86%85%E5%AD%98\" title=\"1.2.4 Windows\u7269\u7406\u5185\u5b58\">1.2.4 Windows\u7269\u7406\u5185\u5b58<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/ixriver.com\/?p=900\/#125_Android%E7%89%A9%E7%90%86%E5%86%85%E5%AD%98\" title=\"1.2.5 Android\u7269\u7406\u5185\u5b58\">1.2.5 Android\u7269\u7406\u5185\u5b58<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/ixriver.com\/?p=900\/#13_%E5%86%85%E5%AD%98%E6%9C%BA%E5%88%B6\" title=\"1.3 \u5185\u5b58\u673a\u5236\">1.3 \u5185\u5b58\u673a\u5236<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/ixriver.com\/?p=900\/#131_iOS_%E5%86%85%E5%AD%98%E6%9C%BA%E5%88%B6\" title=\"1.3.1 iOS \u5185\u5b58\u673a\u5236\">1.3.1 iOS \u5185\u5b58\u673a\u5236<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/ixriver.com\/?p=900\/#132_Jetsam_%E6%9C%BA%E5%88%B6\" title=\"1.3.2 Jetsam \u673a\u5236\">1.3.2 Jetsam \u673a\u5236<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/ixriver.com\/?p=900\/#133_macOS_%E5%86%85%E5%AD%98%E6%9C%BA%E5%88%B6\" title=\"1.3.3 macOS \u5185\u5b58\u673a\u5236\">1.3.3 macOS \u5185\u5b58\u673a\u5236<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/ixriver.com\/?p=900\/#14_Zombie_Objects\" title=\"1.4 Zombie Objects\">1.4 Zombie Objects<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/ixriver.com\/?p=900\/#15_Address_Sanitizer\" title=\"1.5 Address Sanitizer\">1.5 Address Sanitizer<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/ixriver.com\/?p=900\/#151_%E6%A3%80%E6%B5%8B%E5%A6%82%E4%B8%8B%E5%86%85%E5%AD%98%E4%BD%BF%E7%94%A8%E9%94%99%E8%AF%AF\" title=\"1.5.1 \u68c0\u6d4b\u5982\u4e0b\u5185\u5b58\u4f7f\u7528\u9519\u8bef\">1.5.1 \u68c0\u6d4b\u5982\u4e0b\u5185\u5b58\u4f7f\u7528\u9519\u8bef<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/ixriver.com\/?p=900\/#152_%E4%BD%BF%E7%94%A8%E9%99%90%E5%88%B6\" title=\"1.5.2 \u4f7f\u7528\u9650\u5236\">1.5.2 \u4f7f\u7528\u9650\u5236<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/ixriver.com\/?p=900\/#153_%E5%AF%B9%E6%80%A7%E8%83%BD%E7%9A%84%E5%BD%B1%E5%93%8D\" title=\"1.5.3 \u5bf9\u6027\u80fd\u7684\u5f71\u54cd\">1.5.3 \u5bf9\u6027\u80fd\u7684\u5f71\u54cd<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/ixriver.com\/?p=900\/#16_Abandoned_Memory\" title=\"1.6 Abandoned Memory\">1.6 Abandoned Memory<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/ixriver.com\/?p=900\/#2_%E7%B3%BB%E7%BB%9F%E5%B7%A5%E5%85%B7\" title=\"2 \u7cfb\u7edf\u5de5\u5177\">2 \u7cfb\u7edf\u5de5\u5177<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/ixriver.com\/?p=900\/#21_%E5%86%85%E5%AD%98%E8%B0%83%E8%AF%95%E6%8A%80%E5%B7%A7\" title=\"2.1 \u5185\u5b58\u8c03\u8bd5\u6280\u5de7\">2.1 \u5185\u5b58\u8c03\u8bd5\u6280\u5de7<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/ixriver.com\/?p=900\/#22_%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B7%A5%E5%85%B7\" title=\"2.2 \u547d\u4ee4\u884c\u5de5\u5177\">2.2 \u547d\u4ee4\u884c\u5de5\u5177<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/ixriver.com\/?p=900\/#23_Instruments_%E5%B7%A5%E5%85%B7\" title=\"2.3 Instruments \u5de5\u5177\">2.3 Instruments \u5de5\u5177<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/ixriver.com\/?p=900\/#24_Xcode_%E5%B7%A5%E5%85%B7\" title=\"2.4 Xcode \u5de5\u5177\">2.4 Xcode \u5de5\u5177<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/ixriver.com\/?p=900\/#241_Xcode_%E5%86%85%E5%AD%98%E9%80%89%E9%A1%B9\" title=\"2.4.1 Xcode \u5185\u5b58\u9009\u9879\">2.4.1 Xcode \u5185\u5b58\u9009\u9879<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/ixriver.com\/?p=900\/#3_%E7%BA%BF%E4%B8%8A%E5%B7%A5%E5%85%B7\" title=\"3 \u7ebf\u4e0a\u5de5\u5177\">3 \u7ebf\u4e0a\u5de5\u5177<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/ixriver.com\/?p=900\/#31_FBAllocationTracker\" title=\"3.1 FBAllocationTracker\">3.1 FBAllocationTracker<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/ixriver.com\/?p=900\/#32_FBRetainCycleDetector\" title=\"3.2 FBRetainCycleDetector\">3.2 FBRetainCycleDetector<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/ixriver.com\/?p=900\/#33_MLeakFinder\" title=\"3.3 MLeakFinder\">3.3 MLeakFinder<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/ixriver.com\/?p=900\/#34_Fishhook\" title=\"3.4 Fishhook\">3.4 Fishhook<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"https:\/\/ixriver.com\/?p=900\/#35_%E7%BA%BF%E7%A8%8B%E5%86%85%E5%AD%98%E7%9B%91%E6%8E%A7\" title=\"3.5 \u7ebf\u7a0b\u5185\u5b58\u76d1\u63a7\">3.5 \u7ebf\u7a0b\u5185\u5b58\u76d1\u63a7<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"https:\/\/ixriver.com\/?p=900\/#4_%E5%86%85%E5%AD%98%E4%BC%98%E5%8C%96\" title=\"4 \u5185\u5b58\u4f18\u5316\">4 \u5185\u5b58\u4f18\u5316<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"https:\/\/ixriver.com\/?p=900\/#41_%E5%86%85%E5%AD%98%E7%A2%8E%E7%89%87%E5%8C%96\" title=\"4.1 \u5185\u5b58\u788e\u7247\u5316\">4.1 \u5185\u5b58\u788e\u7247\u5316<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-34\" href=\"https:\/\/ixriver.com\/?p=900\/#42_XCTest_%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95\" title=\"4.2 XCTest \u6027\u80fd\u6d4b\u8bd5\">4.2 XCTest \u6027\u80fd\u6d4b\u8bd5<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-35\" href=\"https:\/\/ixriver.com\/?p=900\/#5_%E5%BE%AA%E7%8E%AF%E5%BC%95%E7%94%A8\" title=\"5 \u5faa\u73af\u5f15\u7528\">5 \u5faa\u73af\u5f15\u7528<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-36\" href=\"https:\/\/ixriver.com\/?p=900\/#51_%E5%9F%BA%E6%9C%AC%E5%8E%9F%E5%88%99\" title=\"5.1 \u57fa\u672c\u539f\u5219\">5.1 \u57fa\u672c\u539f\u5219<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-37\" href=\"https:\/\/ixriver.com\/?p=900\/#52_%E5%B8%B8%E8%A7%81%E6%A1%88%E4%BE%8B\" title=\"5.2 \u5e38\u89c1\u6848\u4f8b\">5.2 \u5e38\u89c1\u6848\u4f8b<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-38\" href=\"https:\/\/ixriver.com\/?p=900\/#521_Masonry_%E4%B8%8D%E5%AD%98%E5%9C%A8%E5%BE%AA%E7%8E%AF%E5%BC%95%E7%94%A8\" title=\"5.2.1 Masonry \u4e0d\u5b58\u5728\u5faa\u73af\u5f15\u7528\">5.2.1 Masonry \u4e0d\u5b58\u5728\u5faa\u73af\u5f15\u7528<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-39\" href=\"https:\/\/ixriver.com\/?p=900\/#522_GCD_%E4%B8%8D%E5%AD%98%E5%9C%A8%E5%BE%AA%E7%8E%AF%E5%BC%95%E7%94%A8\" title=\"5.2.2 GCD \u4e0d\u5b58\u5728\u5faa\u73af\u5f15\u7528\">5.2.2 GCD \u4e0d\u5b58\u5728\u5faa\u73af\u5f15\u7528<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-40\" href=\"https:\/\/ixriver.com\/?p=900\/#523_%E4%BC%9A%E8%AE%AE%E5%B1%9E%E6%80%A7%E5%AF%BC%E8%87%B4%E7%9A%84%E5%BE%AA%E7%8E%AF%E5%BC%95%E7%94%A8\" title=\"5.2.3 \u4f1a\u8bae\u5c5e\u6027\u5bfc\u81f4\u7684\u5faa\u73af\u5f15\u7528\">5.2.3 \u4f1a\u8bae\u5c5e\u6027\u5bfc\u81f4\u7684\u5faa\u73af\u5f15\u7528<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-41\" href=\"https:\/\/ixriver.com\/?p=900\/#524_BulletWindowViewm_%E5%BE%AA%E7%8E%AF%E5%BC%95%E7%94%A8%E6%A1%88%E4%BE%8B\" title=\"5.2.4 BulletWindowView.m \u5faa\u73af\u5f15\u7528\u6848\u4f8b\">5.2.4 BulletWindowView.m \u5faa\u73af\u5f15\u7528\u6848\u4f8b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-42\" href=\"https:\/\/ixriver.com\/?p=900\/#525_%E5%85%B6%E4%BB%96%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98\" title=\"5.2.5 \u5176\u4ed6\u5e38\u89c1\u95ee\u9898\">5.2.5 \u5176\u4ed6\u5e38\u89c1\u95ee\u9898<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h1><span class=\"ez-toc-section\" id=\"iOS_%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86\"><\/span>iOS \u5185\u5b58\u7ba1\u7406<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<h2><span class=\"ez-toc-section\" id=\"1_%E5%8E%9F%E7%90%86\"><\/span>1 \u539f\u7406<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"11_%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98\"><\/span>1.1 \u865a\u62df\u5185\u5b58<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u865a\u62df\u5185\u5b58\u662f\u8ba1\u7b97\u673a\u7cfb\u7edf\u5185\u5b58\u7ba1\u7406\u7684\u4e00\u79cd\u6280\u672f\uff0c\u5b83\u4f7f\u5f97\u5e94\u7528\u7a0b\u5e8f\u8ba4\u4e3a\u5b83\u62e5\u6709\u8fde\u7eed\u7684\u53ef\u7528\u7684\u5185\u5b58\u3002<\/p>\n<p><strong>\u5bf9\u4e8e32\u4f4d\u8fdb\u7a0b\uff0c\u53ef\u7528\u7684\u865a\u62df\u5185\u5b58\u7a7a\u95f4\u4e3a4G\uff0c64\u4f4d\u8fdb\u7a0b\uff0c\u53ef\u7528\u7684\u865a\u62df\u5185\u5b58\u7a7a\u95f4\u4e3a16EB<\/strong><\/p>\n<p>\u5404\u5e73\u53f0\u5b9e\u9645\u9650\u5236\uff1a<\/p>\n<ul>\n<li>X64 CPU \u4ec5\u652f\u630164\u4f4d\u865a\u62df\u5730\u5740\u4e2d\u768448\u4f4d\uff0c\u7406\u8bba\u4e0a\u53ef\u7528\u7684\u865a\u62df\u5185\u5b58\u7a7a\u95f4\u4e3a256TB<\/li>\n<li>Windows \u505a\u4e86\u8fdb\u4e00\u6b65\u9650\u5236\uff0c\u53ea\u4f7f\u7528\u5176\u4e2d\u768444\u4f4d\uff0c\u7406\u8bba\u4e0a\u53ef\u7528\u7684\u865a\u62df\u5185\u5b58\u7a7a\u95f4\u4e3a16TB<\/li>\n<li>iOS \u6709\u6548\u6307\u9488\u957f\u5ea6\u4e3a36\u4f4d\uff0c\u53ea\u4f7f\u7528\u4e86\u5176\u4e2d\u768433\u4f4d\uff0c\u4e5f\u5c31\u662f\u865a\u62df\u5185\u5b58\u7a7a\u95f4\u4e3a8G<\/li>\n<li>Android \u6709\u6548\u6307\u948840\u4f4d\uff0c\u53ea\u4f7f\u7528\u4e86\u5176\u4e2d\u768439\u4f4d\uff0c\u7406\u8bba\u4e0a\u53ef\u7528\u7684\u865a\u62df\u5185\u5b58\u7a7a\u95f4\u4e3a1TB\uff0c\u7528\u6237\u7a7a\u95f4\u4e3a512G<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"\u865a\u62df\u5185\u5b58\u793a\u610f\u56fe\" src=\"https:\/\/www.ixriver.com\/wp-content\/uploads\/2026\/02\/image_1-2.png\" \/><\/p>\n<blockquote>\n<p>\u53c2\u8003\uff1a\u5168\u6c11K\u6b4c\u5185\u5b58\u7bc72\u2014\u2014\u865a\u62df\u5185\u5b58\u6d45\u6790<\/p>\n<\/blockquote>\n<h3><span class=\"ez-toc-section\" id=\"12_%E7%89%A9%E7%90%86%E5%86%85%E5%AD%98\"><\/span>1.2 \u7269\u7406\u5185\u5b58<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"121_%E5%AD%98%E5%82%A8%E5%99%A8%E7%9A%84%E5%B1%82%E6%AC%A1%E7%BB%93%E6%9E%84\"><\/span>1.2.1 \u5b58\u50a8\u5668\u7684\u5c42\u6b21\u7ed3\u6784<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u5b58\u50a8\u5668\u7684\u5c42\u6b21\u7ed3\u6784\u4ece\u5feb\u5230\u6162\u3001\u4ece\u8d35\u5230\u4fbf\u5b9c\u4f9d\u6b21\u4e3a\uff1a\u5bc4\u5b58\u5668\u3001\u9ad8\u901f\u7f13\u5b58\u3001\u4e3b\u5b58\u3001\u8f85\u5b58\u3002<\/p>\n<h4><span class=\"ez-toc-section\" id=\"122_iOS%E7%89%A9%E7%90%86%E5%86%85%E5%AD%98\"><\/span>1.2.2 iOS\u7269\u7406\u5185\u5b58<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p><strong>\u5185\u5b58\u5206\u7c7b\uff1a<\/strong><\/p>\n<ul>\n<li><strong>Free Memory<\/strong>\uff1a\u672a\u4f7f\u7528\u7684RAM\u5bb9\u91cf<\/li>\n<li><strong>Used Memory<\/strong>\uff1a<\/li>\n<li><strong>Wired Memory<\/strong>\uff1a\u5b58\u653e\u5185\u6838\u4ee3\u7801\u548c\u6570\u636e\u7ed3\u6784<\/li>\n<li><strong>Active Memory<\/strong>\uff1a\u6d3b\u8dc3\u5185\u5b58\n<ul>\n<li><strong>Purged Memory<\/strong>\uff08\u4e5f\u5c5e\u4e8e\u6d3b\u8dc3\u5185\u5b58\uff09\uff1a\u53ef\u91ca\u653e\u5185\u5b58<\/li>\n<\/ul>\n<\/li>\n<li><strong>Inactive Memory<\/strong>\uff1a\u4e0d\u6d3b\u8dc3\u5185\u5b58<\/li>\n<\/ul>\n<p><strong>\u5185\u5b58\u6307\u6807\uff1a<\/strong><\/p>\n<p>iOS \u5e94\u7528\u5360\u7528\u7269\u7406\u5185\u5b58\u4f7f\u7528 <code>phys_footprint<\/code> \u6bd4 <code>resident_size<\/code> \u66f4\u7cbe\u51c6\u3002<\/p>\n<pre><code>virtual memory = dirty memory + compressed memory + clean memory\nresident memory = dirty memory + compressed memory + clean memory that loaded in physical memory\nfootprint memory = dirty memory + compressed memory\n<\/code><\/pre>\n<p><strong>\u5173\u7cfb\uff1a<\/strong> <code>virtual memory &gt; resident memory &gt; footprint memory<\/code><\/p>\n<p><img decoding=\"async\" alt=\"iOS\u7269\u7406\u5185\u5b58\u793a\u610f\u56fe\" src=\"https:\/\/www.ixriver.com\/wp-content\/uploads\/2026\/02\/image_2-2.png\" \/><\/p>\n<p><img decoding=\"async\" alt=\"\u6d3b\u52a8\u76d1\u89c6\u5668\" src=\"https:\/\/www.ixriver.com\/wp-content\/uploads\/2026\/02\/image_3-2.png\" \/><\/p>\n<p><strong>\u6d3b\u52a8\u76d1\u89c6\u5668\u8bf4\u660e\uff1a<\/strong><\/p>\n<ul>\n<li><strong>\u5185\u5b58<\/strong>\uff1afootprint \u5185\u5b58<\/li>\n<li><strong>\u5b9e\u9645\u5185\u5b58<\/strong>\uff1aresident \u5185\u5b58<\/li>\n<li><strong>\u4e13\u7528\u5185\u5b58<\/strong>\uff1a\u901a\u5e38\u662f\u6307\u8fdb\u7a0b\u6240\u4f7f\u7528\u7684\u5806\u548c\u6808\u7684\u5927\u5c0f\uff0c\u4ee5\u53ca\u8fdb\u7a0b\u6240\u52a0\u8f7d\u7684\u4ee3\u7801\u548c\u6570\u636e\u7684\u5927\u5c0f<\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"123_macOS%E7%89%A9%E7%90%86%E5%86%85%E5%AD%98\"><\/span>1.2.3 macOS\u7269\u7406\u5185\u5b58<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<pre><code>resident memory = dirty memory + compressed memory + clean memory that loaded in physical memory\nfootprint memory = dirty memory + compressed memory + swap memory\n<\/code><\/pre>\n<p>\u5728\u6ca1\u6709\u4ea4\u6362\u9875\u7684\u60c5\u51b5\u4e0b\uff0cfootprint \u5c0f\u4e8e\u5b9e\u9645\u5185\u5b58\u5927\u5c0f\uff0c\u5728\u6709\u4ea4\u6362\u9875\u7684\u60c5\u51b5\u4e0b\uff0cfootprint\u5185\u5b58\u53ef\u80fd\u5927\u4e8e\u5b9e\u9645\u5185\u5b58\u5927\u5c0f\u3002<\/p>\n<h4><span class=\"ez-toc-section\" id=\"124_Windows%E7%89%A9%E7%90%86%E5%86%85%E5%AD%98\"><\/span>1.2.4 Windows\u7269\u7406\u5185\u5b58<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u67e5\u770b\u65b9\u5f0f\uff1a\u4efb\u52a1\u7ba1\u7406\u5668 -&gt; \u5185\u5b58\uff08\u6d3b\u52a8\u7684\u4e13\u7528\u5de5\u4f5c\u96c6\uff09<\/p>\n<h4><span class=\"ez-toc-section\" id=\"125_Android%E7%89%A9%E7%90%86%E5%86%85%E5%AD%98\"><\/span>1.2.5 Android\u7269\u7406\u5185\u5b58<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\uff08\u5f85\u8865\u5145\uff09<\/p>\n<h3><span class=\"ez-toc-section\" id=\"13_%E5%86%85%E5%AD%98%E6%9C%BA%E5%88%B6\"><\/span>1.3 \u5185\u5b58\u673a\u5236<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"131_iOS_%E5%86%85%E5%AD%98%E6%9C%BA%E5%88%B6\"><\/span>1.3.1 iOS \u5185\u5b58\u673a\u5236<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>iOS\u6ca1\u6709\u5185\u5b58\u4ea4\u6362\u673a\u5236\uff0c\u4f46\u6709\u5185\u5b58\u538b\u7f29\u673a\u5236\u3002<\/p>\n<p><strong>\u865a\u62df\u9875\u4e0e\u7269\u7406\u9875\u5927\u5c0f\uff1a<\/strong><\/p>\n<table>\n<thead>\n<tr>\n<th>\u5904\u7406\u5668<\/th>\n<th>\u865a\u62df\u9875<\/th>\n<th>\u7269\u7406\u9875<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>A1~A6<\/td>\n<td>4K<\/td>\n<td>4K<\/td>\n<\/tr>\n<tr>\n<td>A7-A8<\/td>\n<td>16K<\/td>\n<td>4K<\/td>\n<\/tr>\n<tr>\n<td>A9~<\/td>\n<td>16K<\/td>\n<td>16K<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4><span class=\"ez-toc-section\" id=\"132_Jetsam_%E6%9C%BA%E5%88%B6\"><\/span>1.3.2 Jetsam \u673a\u5236<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p><strong>\u4e0a\u62a5\u987a\u5e8f\uff1a<\/strong> \u5148\u5185\u5b58\u544a\u8b66 -&gt; \u5185\u5b58\u89e6\u9876 -&gt; OOM\u7ebf\u4e0a\u76d1\u63a7<\/p>\n<p><strong>\u6e05\u7406\u7b56\u7565\uff1a<\/strong><\/p>\n<ul>\n<li>\u5355\u4e2a App \u7269\u7406\u5185\u5b58\u5360\u7528\u8d85\u8fc7\u4e0a\u9650<\/li>\n<li>\u6574\u4e2a\u8bbe\u5907\u7269\u7406\u5185\u5b58\u5360\u7528\u6536\u5230\u538b\u529b\u6309\u7167\u4e0b\u9762\u4f18\u5148\u7ea7\u5b8c\u6210\u6e05\u7406\uff1a<\/li>\n<li>\u540e\u53f0\u5e94\u7528 &gt; \u524d\u53f0\u5e94\u7528<\/li>\n<li>\u5185\u5b58\u5360\u7528\u9ad8\u7684\u5e94\u7528 &gt; \u5185\u5b58\u5360\u7528\u4f4e\u7684\u5e94\u7528<\/li>\n<li>\u7528\u6237\u5e94\u7528 &gt; \u7cfb\u7edf\u5e94\u7528<\/li>\n<\/ul>\n<blockquote>\n<p>\u53c2\u8003\uff1a<a href=\"https:\/\/blog.csdn.net\/wangletiancsdn\/article\/details\/109157806\">iOS Jetsam \u673a\u5236\u8be6\u89e3<\/a><\/p>\n<\/blockquote>\n<p><strong>OOM \u76d1\u63a7\u65b9\u6848\uff1a<\/strong><\/p>\n<p>\u4f7f\u7528 Facebook \u6392\u9664\u6cd5\uff0cOOM\u5b9a\u4f4d\u65b9\u6848\u4e3b\u8981\u6709\uff1a<br \/>\n&#8211; \u7ebf\u4e0a Allocation\uff08OOMDetector hook \u5806\u6808\u548cVM \u5206\u914d\u7684\u65b9\u5f0f\uff09<br \/>\n&#8211; \u7ebf\u4e0a Memory Graph\uff08\u6296\u97f3\u65b9\u6848\uff09<\/p>\n<p><strong>OOM \u9608\u503c\uff08Android\uff09\uff1a<\/strong><\/p>\n<table>\n<thead>\n<tr>\n<th>\u5185\u5b58\u5927\u5c0f<\/th>\n<th>\u4ee3\u8868\u673a\u578b<\/th>\n<th>OOM\u9608\u503c(PSS+Swap)(64\u4f4d)<\/th>\n<th>OOM\u9608\u503c(PSS+Swap)(32\u4f4d)<\/th>\n<th>\u5b89\u5168\u503c\u63a8\u8350(32\u4f4d)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>1G<\/td>\n<td>vivo Y33<\/td>\n<td>&#8212;<\/td>\n<td>520~660<\/td>\n<td>600<\/td>\n<\/tr>\n<tr>\n<td>2G<\/td>\n<td>OPPO A33<\/td>\n<td>&#8212;<\/td>\n<td>1200~1400<\/td>\n<td>1000<\/td>\n<\/tr>\n<tr>\n<td>3G<\/td>\n<td>vivo Y66<\/td>\n<td>1700~2050<\/td>\n<td>1700~2050<\/td>\n<td>1500<\/td>\n<\/tr>\n<tr>\n<td>4G<\/td>\n<td>OPPO R11<\/td>\n<td>2400~2900<\/td>\n<td>2400~2900<\/td>\n<td>2000<\/td>\n<\/tr>\n<tr>\n<td>6G<\/td>\n<td>OPPO R15<\/td>\n<td>4650~4900<\/td>\n<td>3000+<\/td>\n<td>2500<\/td>\n<\/tr>\n<tr>\n<td>8G<\/td>\n<td>\u4e00\u52a06<\/td>\n<td>5250~5500<\/td>\n<td>&#8212;<\/td>\n<td>3000<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>OOM \u9608\u503c\uff08iOS\uff09\uff1a<\/strong><\/p>\n<table>\n<thead>\n<tr>\n<th>\u5185\u5b58\u5927\u5c0f<\/th>\n<th>\u4ee3\u8868\u673a\u578b<\/th>\n<th>OOM\u9608\u503c(PSS+Swap)<\/th>\n<th>\u5b89\u5168\u503c\u63a8\u8350<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>1G<\/td>\n<td>iPhone 5S<\/td>\n<td>645<\/td>\n<td>500<\/td>\n<\/tr>\n<tr>\n<td>2G<\/td>\n<td>iPhone 6S<\/td>\n<td>1392<\/td>\n<td>1000<\/td>\n<\/tr>\n<tr>\n<td>2.5G<\/td>\n<td>iPhone X<\/td>\n<td>1800(iOS12\u53ca\u4ee5\u4e0a)<\/td>\n<td>1600<\/td>\n<\/tr>\n<tr>\n<td>3G<\/td>\n<td>iPhone 8P<\/td>\n<td>2040<\/td>\n<td>1500<\/td>\n<\/tr>\n<tr>\n<td>4G<\/td>\n<td>iPhone 11, iPhone 12<\/td>\n<td>2050<\/td>\n<td>1550<\/td>\n<\/tr>\n<tr>\n<td>6G<\/td>\n<td>iPhone 12 Pro<\/td>\n<td>2850<\/td>\n<td>2000<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Jetsam \u539f\u56e0\uff1a<\/strong><\/p>\n<p>Jetsam\u91cc\u9762\u7684&#8221;largestProcess&#8221;\u6307\u51fa\u4e86\u6700\u5927\u4f7f\u7528\u5185\u5b58\u7684\u8fdb\u7a0b\u3002<\/p>\n<table>\n<thead>\n<tr>\n<th>\u539f\u56e0<\/th>\n<th>\u89e3\u91ca<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>per-process-limit<\/td>\n<td>\u8d85\u8fc7\u6bcf\u4e2a\u8fdb\u7a0b\u7684\u9650\u5236\uff0c\u4e0d\u540c\u8fdb\u7a0b\u7684\u9650\u5236\u989d\u5ea6\u4e0d\u4e00\u6837\uff0c\u6bd4\u5982\u6269\u5c55<\/td>\n<\/tr>\n<tr>\n<td>vm-pageshortage<\/td>\n<td>\u865a\u62df\u5185\u5b58\u9875\u4e0d\u8db3<\/td>\n<\/tr>\n<tr>\n<td>vnode-limit<\/td>\n<td>\u7cfb\u7edf\u6253\u5f00\u592a\u591a\u7684\u6587\u4ef6<\/td>\n<\/tr>\n<tr>\n<td>highwater<\/td>\n<td>\u7cfb\u7edf\u5e38\u9a7b\u8fdb\u7a0b\u8d85\u8fc7\u5185\u5b58\u9650\u5236<\/td>\n<\/tr>\n<tr>\n<td>fc-thrashing<\/td>\n<td>\u4f7f\u7528\u8fc7\u591a\u7684\u7cfb\u7edf\u6587\u4ef6\u7f13\u5b58<\/td>\n<\/tr>\n<tr>\n<td>jettisoned<\/td>\n<td>\u5176\u5b83\u539f\u56e0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4><span class=\"ez-toc-section\" id=\"133_macOS_%E5%86%85%E5%AD%98%E6%9C%BA%E5%88%B6\"><\/span>1.3.3 macOS \u5185\u5b58\u673a\u5236<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>macOS \u6709\u5185\u5b58\u4ea4\u6362\u673a\u5236\u3002<\/p>\n<h3><span class=\"ez-toc-section\" id=\"14_Zombie_Objects\"><\/span>1.4 Zombie Objects<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u7528\u4e8e\u68c0\u6d4b\u5bf9\u8c61\u91ca\u653e\u4e4b\u540e\uff0c\u53c8\u7ee7\u7eed\u4f7f\u7528\u7684\u95ee\u9898\u3002Address Sanitizer \u76f8\u6bd4 Zombie Objects \u68c0\u6d4b\u8303\u56f4\u66f4\u5e7f\u3002<\/p>\n<h3><span class=\"ez-toc-section\" id=\"15_Address_Sanitizer\"><\/span>1.5 Address Sanitizer<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"151_%E6%A3%80%E6%B5%8B%E5%A6%82%E4%B8%8B%E5%86%85%E5%AD%98%E4%BD%BF%E7%94%A8%E9%94%99%E8%AF%AF\"><\/span>1.5.1 \u68c0\u6d4b\u5982\u4e0b\u5185\u5b58\u4f7f\u7528\u9519\u8bef<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ul>\n<li>\u5185\u5b58\u91ca\u653e\u540e\u53c8\u88ab\u4f7f\u7528<\/li>\n<li>\u5185\u5b58\u91cd\u590d\u91ca\u653e<\/li>\n<li>\u91ca\u653e\u672a\u7533\u8bf7\u7684\u5185\u5b58<\/li>\n<li>\u4f7f\u7528\u6808\u5185\u5b58\u4f5c\u4e3a\u51fd\u6570\u8fd4\u56de\u503c<\/li>\n<li>\u4f7f\u7528\u4e86\u8d85\u51fa\u4f5c\u7528\u57df\u7684\u6808\u5185\u5b58<\/li>\n<li>\u5185\u5b58\u8d8a\u754c\u8bbf\u95ee<\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"152_%E4%BD%BF%E7%94%A8%E9%99%90%E5%88%B6\"><\/span>1.5.2 \u4f7f\u7528\u9650\u5236<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ul>\n<li>Address Sanitizer \u662f\u8fd0\u884c\u65f6\u7684\u80fd\u529b\uff0c\u4ee3\u7801\u53ea\u6709\u88ab\u8fd0\u884c\u5230\u4e86\u624d\u80fd\u68c0\u6d4b\u51fa\u5185\u5b58\u95ee\u9898\uff0c\u800c\u6211\u4eec\u65e0\u6cd5\u4fdd\u8bc1\u6240\u6709\u7684\u4ee3\u7801\u5206\u652f\u548c\u903b\u8f91\u90fd\u80fd\u6267\u884c\u5230\uff0c\u6240\u4ee5\u68c0\u6d4b\u5e76\u4e0d\u662f\u5168\u9762\u7684\u3002Apple \u63a8\u8350\u7ed3\u5408\u5355\u5143\u6d4b\u8bd5\u4e00\u8d77\u4f7f\u7528\u3002<\/li>\n<li>Address Sanitizer \u4e0d\u80fd\u68c0\u6d4b\u5185\u5b58\u6cc4\u9732\u3001\u8bbf\u95ee\u672a\u521d\u59cb\u5316\u7684\u5185\u5b58\u6216\u6574\u5f62\u6ea2\u51fa<\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"153_%E5%AF%B9%E6%80%A7%E8%83%BD%E7%9A%84%E5%BD%B1%E5%93%8D\"><\/span>1.5.3 \u5bf9\u6027\u80fd\u7684\u5f71\u54cd<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u5c06\u4f7f\u4ee3\u7801\u6267\u884c\u6548\u7387\u964d\u4f4e2-5\u500d\uff0c\u5185\u5b58\u4f7f\u7528\u589e\u52a02-3\u500d\u3002<\/p>\n<blockquote>\n<p>\u53c2\u8003\uff1aiOS\u5185\u5b58\u8c03\u8bd5\u6280\u5de7<\/p>\n<\/blockquote>\n<h3><span class=\"ez-toc-section\" id=\"16_Abandoned_Memory\"><\/span>1.6 Abandoned Memory<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>\u57fa\u672c\u539f\u5219\uff1a<\/strong> \u91cd\u590d\u64cd\u4f5c\u56de\u5230\u539f\u6765\u72b6\u6001\uff0c\u5185\u5b58\u4e0d\u5e94\u8be5\u6709\u589e\u957f\u3002<\/p>\n<h2><span class=\"ez-toc-section\" id=\"2_%E7%B3%BB%E7%BB%9F%E5%B7%A5%E5%85%B7\"><\/span>2 \u7cfb\u7edf\u5de5\u5177<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<blockquote>\n<p>\u53c2\u8003\u8d44\u6e90\uff1a<br \/>\n&#8211; iOS\u5806\u5185\u5b58\u788e\u7247\u5316\u53ca\u5982\u4f55\u5b9a\u4f4d\u4f18\u5316<br \/>\n&#8211; \u6df1\u5165\u89e3\u6790iOS\u5185\u5b58 WWDC2018 iOS Memory Deep Dive<\/p>\n<\/blockquote>\n<p><strong>\u5e38\u7528\u547d\u4ee4\u884c\u5de5\u5177\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash\">vmmap integrity_647.memgraph\nvmmap --summary integrity_647.memgraph\nleaks integrity_647.memgraph\nleaks --tracetree integrity_647.memgraph\nheap integrity_647.memgraph -sortBySize\nmalloc_history integrity_647.memgraph\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"21_%E5%86%85%E5%AD%98%E8%B0%83%E8%AF%95%E6%8A%80%E5%B7%A7\"><\/span>2.1 \u5185\u5b58\u8c03\u8bd5\u6280\u5de7<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u9488\u5bf9\u4e0d\u540c\u95ee\u9898\u7684\u8c03\u8bd5\u65b9\u6cd5\uff1a<\/p>\n<ul>\n<li><strong>SIGABRT<\/strong>\uff1a\u5f00\u542f Exception Breakpoint<\/li>\n<li><strong>EXC_BAD_ACCESS<\/strong>\uff1a\u5f00\u542f Zombie Objects &amp; Address Sanitizer<\/li>\n<li><strong>Memory leak<\/strong>\uff1a\u4f7f\u7528 Debug Memory Graph<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"22_%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B7%A5%E5%85%B7\"><\/span>2.2 \u547d\u4ee4\u884c\u5de5\u5177<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>\u5e38\u7528\u5de5\u5177\uff1a<\/strong> <code>leaks<\/code>\u3001<code>heap<\/code>\u3001<code>vmmap<\/code>\u3001<code>malloc_history<\/code><\/p>\n<p><strong>\u547d\u4ee4\u884c\u5de5\u5177\u67e5\u627e\u5185\u5b58\u95ee\u9898\u6b65\u9aa4\uff1a<\/strong><\/p>\n<p><strong>\u524d\u7f6e\u6761\u4ef6\uff1a<\/strong> \u751f\u6210\u524d\u540e\u5bf9\u6bd4\u7684 memgraph<\/p>\n<ol>\n<li>\n<p><strong>\u68c0\u6d4b\u662f\u5426\u6709\u5185\u5b58\u6cc4\u6f0f<\/strong><br \/>\n   <code>bash<br \/>\n   leaks -quiet *.memgraph<\/code><\/p>\n<\/li>\n<li>\n<p><strong>\u5982\u679c\u6ca1\u6709\u5185\u5b58\u6cc4\u6f0f\uff0c\u901a\u8fc7 vmmap \u67e5\u770b footprint<\/strong><br \/>\n   <code>bash<br \/>\n   vmmap *.memgraph<br \/>\n   vmmap --summary *.memgraph<\/code><\/p>\n<\/li>\n<li>\n<p><strong>\u67e5\u770b footprint \u662f\u5426\u5185\u5b58\u6709\u53d8\u5316<\/strong>\uff0c\u5982\u679c\u6709\u660e\u663e\u589e\u957f\uff0c\u8bf4\u660e\u6709\u5185\u5b58\u6cc4\u6f0f<\/p>\n<\/li>\n<li>\n<p><strong>\u67e5\u770b\u6cc4\u6f0f\u7684\u5bf9\u8c61<\/strong><br \/>\n   <code>bash<br \/>\n   heap -s -diffFrom=pre.memgraph post.memgraph<\/code><\/p>\n<\/li>\n<li>\n<p><strong>\u67e5\u770b\u5bf9\u8c61\u7684\u5730\u5740<\/strong><br \/>\n   <code>bash<br \/>\n   heap -address='\u6cc4\u6f0f\u5bf9\u8c61' post.memgraph<\/code><\/p>\n<\/li>\n<li>\n<p><strong>\u67e5\u770b\u5bf9\u8c61\u5206\u914d\u5806\u6808<\/strong><br \/>\n   <code>bash<br \/>\n   malloc_history -fullStacks post.memgraph \u6cc4\u6f0f\u5bf9\u8c61\u5730\u5740<\/code><\/p>\n<\/li>\n<li>\n<p><strong>\u67e5\u770b\u5bf9\u8c61\u7684\u5f15\u7528\u5173\u7cfb<\/strong><br \/>\n   <code>bash<br \/>\n   leaks -traceTree=\u6cc4\u6f0f\u5bf9\u8c61\u5730\u5740 post.memgraph<\/code><\/p>\n<\/li>\n<li>\n<p><strong>\u5f00\u542f malloc history\uff0c\u4ece\u547d\u4ee4\u884c\u542f\u52a8\u8fdb\u7a0b<\/strong><br \/>\n   <code>bash<br \/>\n   export MallocStackLogging=1<br \/>\n   export MallocStackLoggingNoCompact=1<br \/>\n   leaks -outputGraph 34.memgraph pid<br \/>\n   open -a TencentMeeting.app<\/code><\/p>\n<\/li>\n<\/ol>\n<p><strong>Android\u7aef\u547d\u4ee4\u884c\u5de5\u5177\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash\">dumpsys meminfo \u4f1a\u8bae\u5305\u540d\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"23_Instruments_%E5%B7%A5%E5%85%B7\"><\/span>2.3 Instruments \u5de5\u5177<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Instruments \u5de5\u5177\u5305\u542b\uff1a<strong>Leaks<\/strong>\u3001<strong>Allocations<\/strong>\u3001<strong>VMTracker<\/strong><\/p>\n<blockquote>\n<p><strong>\u5907\u6ce8\uff1a<\/strong> iOS\u91cd\u7b7e\u540d\u5305\uff0cLeaks\u6a21\u677f\u8dd1\u4e0d\u8d77\u6765\uff0c\u4f30\u8ba1\u9700\u8981\u4f7f\u7528\u6e90\u7801\u7f16\u8bd1\uff0c\u6bd4\u8f83\u9ebb\u70e6\u3002<\/p>\n<\/blockquote>\n<p><strong>\u5185\u5b58\u6cc4\u6f0f\u68c0\u6d4b\u547d\u4ee4\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash\">xcrun xctrace record --template 'Leaks' --attach 6654 --device 6daac09469e94a24a2fa1f684bcd57963fd29c25 --output 700.trace --time-limit 8000ms\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"24_Xcode_%E5%B7%A5%E5%85%B7\"><\/span>2.4 Xcode \u5de5\u5177<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u5305\u62ec\u5185\u5b58\u4eea\u8868\u76d8\u3001Debug Memory Graph\u3002<\/p>\n<h4><span class=\"ez-toc-section\" id=\"241_Xcode_%E5%86%85%E5%AD%98%E9%80%89%E9%A1%B9\"><\/span>2.4.1 Xcode \u5185\u5b58\u9009\u9879<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<table>\n<thead>\n<tr>\n<th>\u9009\u9879<\/th>\n<th>\u542b\u4e49<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Malloc Scribble<\/strong><\/td>\n<td>libsystem_malloc.dylib \u63d0\u4f9b\u7684\u529f\u80fd\uff0c\u5185\u5b58\u6d82\u9e26\uff0c\u7533\u8bf7\u5185\u5b58\u586b0xAA\uff0c\u91ca\u653e\u5185\u5b58\u586b0x55<\/td>\n<\/tr>\n<tr>\n<td>Malloc Guard Edges<\/td>\n<td>\u5185\u5b58\u9875\u4fdd\u62a4\uff0c\u7533\u8bf7\u5927\u7247\u5185\u5b58\u7684\u4e4b\u524d\u6216\u8005\u4e4b\u540e\u90fd\u4f1a\u5728 page \u4e0a\u52a0\u4fdd\u62a4<\/td>\n<\/tr>\n<tr>\n<td><strong>Guard Malloc<\/strong><\/td>\n<td>\u6355\u83b7\u5185\u5b58\u7684\u975e\u6cd5\u4f7f\u7528\uff0c\u7c7b\u4f3c Address Sanitizer\uff0c\u4f7f\u7528libgmalloc\u66ff\u6362libsystem_malloc.dylib\uff0c\u53ea\u80fd\u5728\u6a21\u62df\u5668\u4f7f\u7528<\/td>\n<\/tr>\n<tr>\n<td><strong>Malloc Stack logging<\/strong><\/td>\n<td>\u8bb0\u5f55\u5185\u5b58\u5206\u914d\u7684\u5806\u6808<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><span class=\"ez-toc-section\" id=\"3_%E7%BA%BF%E4%B8%8A%E5%B7%A5%E5%85%B7\"><\/span>3 \u7ebf\u4e0a\u5de5\u5177<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"31_FBAllocationTracker\"><\/span>3.1 FBAllocationTracker<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>\u539f\u7406\uff1a<\/strong> HOOK OC\u5bf9\u8c61\u7684\u5206\u914d\u548c\u91ca\u653e<\/p>\n<p><strong>\u529f\u80fd\uff1a<\/strong> FBAllocationTracker \u7528\u4e8e\u8ddf\u8e2a\u6709\u54ea\u4e9b\u5bf9\u8c61\u751f\u6210\uff0c\u914d\u5408 generation \u53ef\u4ee5\u5b9e\u73b0\u5207\u7247\u8303\u56f4\u5bf9\u8c61\u7684\u68c0\u6d4b<\/p>\n<p><strong>\u6280\u5de7\uff1a<\/strong> \u9700\u8981\u4eba\u5de5\u6253\u70b9\u5bf9\u6bd4\u5bf9\u8c61\u5feb\u7167\uff0c\u53ef\u4ee5\u7cbe\u51c6\u7684\u627e\u51fa\u6cc4\u6f0f\u5bf9\u8c61<\/p>\n<h3><span class=\"ez-toc-section\" id=\"32_FBRetainCycleDetector\"><\/span>3.2 FBRetainCycleDetector<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>\u539f\u7406\uff1a<\/strong> \u6709\u5411\u56fe\u73af\u68c0\u6d4b\uff0c\u4f7f\u7528DFS\u6df1\u5ea6\u4f18\u5148\u904d\u5386\u7b97\u6cd5<\/p>\n<p><strong>\u4f5c\u7528\uff1a<\/strong> \u68c0\u6d4b\u6240\u6709OC\u5bf9\u8c61\u7684\u5faa\u73af\u5f15\u7528\uff0c\u4f46\u65e0\u6cd5\u68c0\u6d4bOC\u548cC\u6df7\u7528\u5bfc\u81f4\u7684\u5faa\u73af\u5f15\u7528<\/p>\n<p><strong>\u7f3a\u70b9\uff1a<\/strong> \u68c0\u6d4b\u6240\u6709\u5bf9\u8c61\uff0c\u4f1a\u5f88\u8017\u6027\u80fd<\/p>\n<p><strong>\u96be\u70b9\uff1a<\/strong> \u5982\u4f55\u7b5b\u9009\u51fa\u9700\u8981\u68c0\u6d4b\u7684\u5bf9\u8c61<\/p>\n<p><strong>\u6280\u5de7\uff1a<\/strong> \u901a\u8fc7 MLeakFinder \u548c FBAllocationTracker \u5148\u7b5b\u9009\u51fa\u53ef\u80fd\u6cc4\u6f0f\u7684\u5bf9\u8c61\uff0c\u7136\u540e\u518d\u4f7f\u7528\u8be5\u5de5\u5177<\/p>\n<p><strong>FBMemoryProfiler\uff1a<\/strong> \u57fa\u4e8e FBRetainCycleDetector \u548c FBAllocationTracker \u5f00\u53d1\u7684\u5faa\u73af\u68c0\u6d4b\u5de5\u5177<\/p>\n<p><strong>\u4f7f\u7528\u793a\u4f8b\uff1a<\/strong><\/p>\n<pre><code class=\"language-objc\">\/\/ step 1: \u751f\u6210\u5f53\u524dgeneration\u5bf9\u5e94\u7684\u5207\u7247\nstatic NSInteger index = 0;\n[[FBAllocationTrackerManager sharedManager] markGeneration];\n++index;\n\n\/\/ \u901a\u8fc7FBAllocationTracker\u83b7\u53d6\u5207\u7247\u751f\u6210\u7684\u5bf9\u8c61\n\/\/ \u628a\u83b7\u53d6\u7684\u5bf9\u8c61\u6dfb\u52a0\u5230FBRetainCycleDetector\u4e2d\uff0c\u5e76\u68c0\u6d4b\u662f\u5426\u5b58\u5728\u5faa\u73af\u5f15\u7528\u7684\u60c5\u51b5\nFBRetainCycleDetector *detector = [FBRetainCycleDetector new];\nNSArray&lt;NSArray&lt;FBAllocationTrackerSummary *&gt; *&gt; *summary = \n    [[FBAllocationTrackerManager sharedManager] currentSummaryForGenerations];\nNSLog(@&quot;total generation %d %d&quot;, summary.count, index);\n\nif (index &lt; summary.count) {\n    NSArray&lt;FBAllocationTrackerSummary *&gt; *summaries = summary[index];\n    for (FBAllocationTrackerSummary *obj in summaries) {\n        NSArray *instances = [[FBAllocationTrackerManager sharedManager] \n            instancesForClass:NSClassFromString(obj.className) \n            inGeneration:index];\n        NSLog(@&quot;generation info %@ %llu&quot;, NSClassFromString(obj.className), obj.instanceSize);\n        for (id s in instances) {\n            [detector addCandidate:s];\n        }\n    }\n}\n\nNSSet *retainCycles = [detector findRetainCycles];\nNSLog(@&quot;find cycle %@&quot;, retainCycles);\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"33_MLeakFinder\"><\/span>3.3 MLeakFinder<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>\u539f\u7406\uff1a<\/strong> UIViewController \u88abpop\u6216\u8005dismiss\u540e\uff0c\u5f88\u5feb\u4f1a\u88ab\u91ca\u653e<\/p>\n<p><strong>\u5b9e\u73b0\uff1a<\/strong> UIViewController dismiss\u4e4b\u540e\uff0c\u5ef6\u8fdf3\u79d2\u4e4b\u540e\u68c0\u6d4b\u5f31\u5f15\u7528\u6307\u9488\u662f\u5426\u8fd8\u5b58\u5728<\/p>\n<p><strong>\u4f5c\u7528\uff1a<\/strong> \u53ef\u4ee5\u68c0\u6d4bViewController\u548cView\u6cc4\u6f0f\uff0c\u4f46\u5bf9\u4e8eViewController\u5176\u5b83\u6210\u5458\u51fa\u73b0\u7684\u5185\u5b58\u6cc4\u6f0f\uff0c\u5219\u65e0\u6cd5\u81ea\u52a8\u68c0\u6d4b\uff0c\u9700\u624b\u5de5\u6dfb\u52a0<\/p>\n<h3><span class=\"ez-toc-section\" id=\"34_Fishhook\"><\/span>3.4 Fishhook<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>\u539f\u7406\uff1a<\/strong><\/p>\n<ul>\n<li>\u627e\u5230 <code>nl_symbol_ptr<\/code>(got)\/<code>la_symbol_ptr<\/code> \u6570\u636e\u6bb5<\/li>\n<li>\u6570\u636e\u6bb5\u91cc\u9762\u90fd\u662f\u7b26\u53f7\u6307\u9488\uff0c\u901a\u8fc7\u7b26\u53f7\u6307\u9488\u627e\u5230\u5bf9\u5e94\u7684\u7b26\u53f7<\/li>\n<li>\u6d41\u7a0b\uff1a<code>dynamic symbol table -&gt; symbol table -&gt; string table<\/code><\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"35_%E7%BA%BF%E7%A8%8B%E5%86%85%E5%AD%98%E7%9B%91%E6%8E%A7\"><\/span>3.5 \u7ebf\u7a0b\u5185\u5b58\u76d1\u63a7<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>\u539f\u7406\uff1a<\/strong> Hook\u5185\u5b58\u5206\u914d\u51fd\u6570\uff0c\u6309\u7ebf\u7a0b\u7edf\u8ba1\u5185\u5b58\u7684\u5206\u914d\u548c\u91ca\u653e<\/p>\n<p><strong>\u4f18\u5316\uff1a<\/strong> \u5185\u5b58\u6cc4\u6f0f\u7684\u65f6\u5019\u5f00\u59cb\u76d1\u63a7<\/p>\n<p><strong>\u5404\u5e73\u53f0\u5206\u914d\u51fd\u6570\uff1a<\/strong><\/p>\n<table>\n<thead>\n<tr>\n<th>\u5e73\u53f0<\/th>\n<th>\u5206\u914d\u51fd\u6570<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Android<\/td>\n<td>malloc, calloc, realloc, memalign, free<\/td>\n<\/tr>\n<tr>\n<td>Windows<\/td>\n<td>NtAllocateVirtualMemory\uff0cNtFreeVirtualMemory<\/td>\n<\/tr>\n<tr>\n<td>iOS<\/td>\n<td>\uff08\u5f85\u8865\u5145\uff09<\/td>\n<\/tr>\n<tr>\n<td>macOS<\/td>\n<td>\uff08\u5f85\u8865\u5145\uff09<\/td>\n<\/tr>\n<tr>\n<td>Linux<\/td>\n<td>\uff08\u5f85\u8865\u5145\uff09<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><span class=\"ez-toc-section\" id=\"4_%E5%86%85%E5%AD%98%E4%BC%98%E5%8C%96\"><\/span>4 \u5185\u5b58\u4f18\u5316<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"41_%E5%86%85%E5%AD%98%E7%A2%8E%E7%89%87%E5%8C%96\"><\/span>4.1 \u5185\u5b58\u788e\u7247\u5316<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>\u4f18\u5316\u5efa\u8bae\uff1a<\/strong><\/p>\n<ul>\n<li>\u5c3d\u91cf\u4fdd\u8bc1\u8fde\u7eed\u521b\u5efa\u751f\u547d\u5468\u671f\u76f8\u4f3c\u7684\u5bf9\u8c61<\/li>\n<li>\u788e\u7247\u5316\u5c3d\u91cf\u964d\u4f4e\u523025%\u6216\u8005\u66f4\u5c11<\/li>\n<li>\u4f7f\u7528 autorelease pool \u662f\u4e00\u79cd\u51cf\u5c11\u788e\u7247\u7684\u65b9\u5f0f<\/li>\n<li>\u957f\u65f6\u95f4\u8fd0\u884c\u7684\u8fdb\u7a0b\u5c24\u5176\u5bb9\u6613\u4ea7\u751f\u788e\u7247\u5316\uff0c\u591a\u5173\u6ce8\u4e00\u4e0b\u8fd9\u4e9b\u8fdb\u7a0b\u7684\u788e\u7247\u5316<\/li>\n<li>\u4e5f\u53ef\u4ee5\u4f7f\u7528 Instruments \u7684 Allocations \u5de5\u5177\u6765\u8bca\u65ad\u788e\u7247\u5316\u95ee\u9898<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"42_XCTest_%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95\"><\/span>4.2 XCTest \u6027\u80fd\u6d4b\u8bd5<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>\u547d\u4ee4\u793a\u4f8b\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash\"># macOS \u9879\u76ee\nxcodebuild test -project leak_mac.xcodeproj -scheme leak_mac -enablePerformanceTestsDiagnostics YES\n\n# iOS \u9879\u76ee\nxcodebuild test -workspace integrity.xcworkspace -scheme integrity -destination platform=iOS,name=&quot;mj-6s&quot; -enablePerformanceTestsDiagnostics YES\n<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"5_%E5%BE%AA%E7%8E%AF%E5%BC%95%E7%94%A8\"><\/span>5 \u5faa\u73af\u5f15\u7528<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"51_%E5%9F%BA%E6%9C%AC%E5%8E%9F%E5%88%99\"><\/span>5.1 \u57fa\u672c\u539f\u5219<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Block \u6301\u6709\u8c03\u7528\u5bf9\u8c61\u6307\u9488\u4e0d\u4e00\u5b9a\u4f1a\u5bfc\u81f4\u5faa\u73af\u5f15\u7528\uff0c\u8981\u6ee1\u8db3\u5faa\u73af\u5f15\u7528\u7684\u53e6\u5916\u4e00\u4e2a\u6761\u4ef6\u662f\u8c03\u7528\u5bf9\u8c61\u76f4\u63a5\u6216\u8005\u95f4\u63a5\u7684\u6301\u6709 Block \u5bf9\u8c61\u3002<\/p>\n<h3><span class=\"ez-toc-section\" id=\"52_%E5%B8%B8%E8%A7%81%E6%A1%88%E4%BE%8B\"><\/span>5.2 \u5e38\u89c1\u6848\u4f8b<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"521_Masonry_%E4%B8%8D%E5%AD%98%E5%9C%A8%E5%BE%AA%E7%8E%AF%E5%BC%95%E7%94%A8\"><\/span>5.2.1 Masonry \u4e0d\u5b58\u5728\u5faa\u73af\u5f15\u7528<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p><strong>\u539f\u56e0\uff1a<\/strong> \u8c03\u7528\u5bf9\u8c61\u5e76\u4e0d\u6301\u6709 Block<\/p>\n<h4><span class=\"ez-toc-section\" id=\"522_GCD_%E4%B8%8D%E5%AD%98%E5%9C%A8%E5%BE%AA%E7%8E%AF%E5%BC%95%E7%94%A8\"><\/span>5.2.2 GCD \u4e0d\u5b58\u5728\u5faa\u73af\u5f15\u7528<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p><strong>\u539f\u56e0\uff1a<\/strong> Queue \u5e76\u4e0d\u6301\u6709 Block\uff0c\u800c\u662f Block \u6301\u6709 Queue<\/p>\n<p>\u5728 <code>dispatch_async<\/code> \u51fd\u6570\u4e2d\u8ffd\u52a0 Block \u5230 Dispatch Queue \u4e2d\u540e\uff0c\u8be5 Block \u5c31\u901a\u8fc7 <code>dispatch_retain<\/code> \u51fd\u6570\u6301\u6709\u4e86 Dispatch Queue\u3002<\/p>\n<p><img decoding=\"async\" alt=\"GCD\u5185\u5b58\u5173\u7cfb\u56fe\" src=\"https:\/\/www.ixriver.com\/wp-content\/uploads\/2026\/02\/image_4-2.png\" \/><\/p>\n<h4><span class=\"ez-toc-section\" id=\"523_%E4%BC%9A%E8%AE%AE%E5%B1%9E%E6%80%A7%E5%AF%BC%E8%87%B4%E7%9A%84%E5%BE%AA%E7%8E%AF%E5%BC%95%E7%94%A8\"><\/span>5.2.3 \u4f1a\u8bae\u5c5e\u6027\u5bfc\u81f4\u7684\u5faa\u73af\u5f15\u7528<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p><img decoding=\"async\" alt=\"\u4f1a\u8bae\u5c5e\u6027\u5faa\u73af\u5f15\u7528\" src=\"https:\/\/www.ixriver.com\/wp-content\/uploads\/2026\/02\/image_5.png\" \/><\/p>\n<h4><span class=\"ez-toc-section\" id=\"524_BulletWindowViewm_%E5%BE%AA%E7%8E%AF%E5%BC%95%E7%94%A8%E6%A1%88%E4%BE%8B\"><\/span>5.2.4 BulletWindowView.m \u5faa\u73af\u5f15\u7528\u6848\u4f8b<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p><strong>\u95ee\u9898\uff1a<\/strong> \u5faa\u73af\u5f15\u7528\u4f1a\u5bfc\u81f4\u5b83\u7684\u6240\u6709\u6210\u5458\u5bf9\u8c61\u90fd\u6ca1\u6709\u91ca\u653e\uff0c\u901a\u8fc7\u5de5\u5177\u5e76\u4e0d\u597d\u76f4\u63a5\u627e\u5230\u6e90\u5934<\/p>\n<p><strong>\u4ee3\u7801\u793a\u4f8b\uff1a<\/strong><\/p>\n<pre><code class=\"language-objc\">[self.viewModel bindProperty:kWRPropInMeetingBulletBooleanAnimatableBulletHidden \n    withHandler:^(Variant *newValue, Variant *oldValue) {\n        self.bulletComingView.hidden = YES;\n    }];\n<\/code><\/pre>\n<p><img decoding=\"async\" alt=\"BulletWindowView\u5faa\u73af\u5f15\u7528\" src=\"https:\/\/www.ixriver.com\/wp-content\/uploads\/2026\/02\/image_6.png\" \/><\/p>\n<h4><span class=\"ez-toc-section\" id=\"525_%E5%85%B6%E4%BB%96%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98\"><\/span>5.2.5 \u5176\u4ed6\u5e38\u89c1\u95ee\u9898<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ul>\n<li><strong>WKWebView \u66ff\u4ee3 UIWebView<\/strong>\uff1a\u89e3\u51b3\u5927\u56fe\u7247\u548c\u5927\u89c6\u56fe\u5185\u5b58\u95ee\u9898<\/li>\n<li><strong>WMPicInPicImageView.m drawImageData<\/strong>\uff1aiOS\u6e32\u67d3\u5c42\u5f02\u6b65\u961f\u5217\u5806\u79ef<\/li>\n<li><strong>human_mask_mgr.cc OnVideoFrame<\/strong>\uff1a\u8de8\u5e73\u53f0\u5c42\u5f02\u6b65\u961f\u5217\u5806\u79ef<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>iOS \u5185\u5b58\u7ba1\u7406 1 \u539f\u7406 1.1 \u865a\u62df\u5185\u5b58 \u865a\u62df\u5185\u5b58\u662f\u8ba1\u7b97\u673a\u7cfb\u7edf\u5185\u5b58\u7ba1\u7406\u7684\u4e00\u79cd\u6280\u672f\uff0c\u5b83\u4f7f\u5f97\u5e94\u7528\u7a0b\u5e8f\u8ba4\u4e3a\u5b83\u62e5\u6709 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36],"tags":[],"blocksy_meta":[],"featured_image_urls":{"full":"","thumbnail":"","medium":"","medium_large":"","large":"","1536x1536":"","2048x2048":""},"post_excerpt_stackable":"<p>\u76ee\u5f55 Toggle iOS \u5185\u5b58\u7ba1\u74061 \u539f\u74061.1 \u865a\u62df\u5185\u5b581.2 \u7269\u7406\u5185\u5b581.2.1 \u5b58\u50a8\u5668\u7684\u5c42\u6b21\u7ed3\u67841.2.2 iOS\u7269\u7406\u5185\u5b581.2.3 macOS\u7269\u7406\u5185\u5b581.2.4 Windows\u7269\u7406\u5185\u5b581.2&hellip;<\/p>\n","category_list":"<a href=\"https:\/\/ixriver.com\/?cat=36\" rel=\"category\">\u6027\u80fd\u4f18\u5316<\/a>","author_info":{"name":"admin","url":"https:\/\/ixriver.com\/?author=1"},"comments_num":"0 comments","_links":{"self":[{"href":"https:\/\/ixriver.com\/index.php?rest_route=\/wp\/v2\/posts\/900"}],"collection":[{"href":"https:\/\/ixriver.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ixriver.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ixriver.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ixriver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=900"}],"version-history":[{"count":0,"href":"https:\/\/ixriver.com\/index.php?rest_route=\/wp\/v2\/posts\/900\/revisions"}],"wp:attachment":[{"href":"https:\/\/ixriver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=900"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ixriver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=900"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ixriver.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=900"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}