我有一個很大的視圖,就像1000 x 1000.所以我做了clipToBounds = YES。這實際上會爲視圖產生更小的位圖嗎?clipsToBounds = YES是否減少我的內存佔用?
回答
我想可能不是 - 你仍然需要爲視圖分配內存,而不是顯示它。
隨着UIKit瞭解更多關於什麼/不繪製的內容,您可能會獲得非常輕微的性能提升。
但是,您可以自己回答這個問題!製作一個項目,製作1000個1000x1000的視圖並將它們放在屏幕上。然後看看Profiler中的內存使用情況。然後,將clipToBounds設置爲YES並執行相同操作,看看它是否已更改!
我預測它不會但我會對結果感興趣 - 如果你這樣做,請張貼在這裏!窗口 -
1)創建一個新的XCode項目:
謝謝,山姆
編輯
由mystify非常合理的意見之後,我做了以下測試它應用
2)使用以下代碼:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch
[window setClipsToBounds:YES];
[window makeKeyAndVisible];
// Make some views
for (int n = 0; n < 100000; ++n) {
UIImageView *view = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.jpg"]];
[view setFrame:CGRectMake(0, 0, 1000, 1000)];
[window addSubview:view];
[view release];
}
return YES;
}
3)內置它
4)然它在工具 - 對象分配從模擬器的重新開始。
如預測的那樣,沒有變化 - 大約需要16MB,clipsToBounds
設置爲YES或NO。
但是,仍然有幾個問題 -
一)我使用一個UIImageView,以確保我有這樣的需要繪製我的觀點的全部內容 - UI層可以優化不同的不同UIView的子類。 b)我在模擬器中運行它(我沒有iPhone,很方便,我的手機壞了) - 我99%肯定它在設備上沒有任何不同,但我也知道模擬器對於內存泄漏並不是100%準確的,因此在設備上測試也是一個好主意。
我不這麼認爲。 clipsToBounds
是指子視圖,而不是視圖本身。 UIView
文檔建議將CATiledLayer
用於特別大的視圖。 CATiledLayer
應該會降低您的內存佔用量,因爲它只會加載實際顯示給用戶的視圖部分(類似Google地圖加載地圖圖塊)。
編輯:順便說一句,UIKit足夠智能,不會呈現不可見的東西,或者是因爲它不在屏幕上或被其他視圖遮擋。但是,由於您已經在內存中保存了整個視圖,因此這不會有助於提高內存使用率,但只能提高渲染速度。
clipsToBounds急劇降低性能。嘗試在clipToBounds打開的情況下在滾動視圖中放置一堆視圖,然後在視圖中需要實際剪輯的區域添加一些內容(例如視圖具有圓角半徑),然後運行並滾動。滾動將非常生澀。
你並沒有讓處理器的工作變得更容易,通過告訴它渲染得更少,你給它做了更多的工作來決定要畫什麼和不畫什麼。這佔用了週期。
我剛剛發現這種困難的方式 - 然後做了谷歌搜索「clipsToBounds生澀」,並找到了這個線程。我在滾動視圖中看到一堆視圖,每個視圖都打開了clipsToBounds。這些視圖有圓角,我的滾動是生澀。我正在考慮在每個視圖中創建一個子視圖(使用常規方形角),並使用clipsToBounds對其進行設置,而不是使用圓角。 –
- 1. 減少內存佔用
- 2. 減少內存佔用量的Java集
- 3. 減少應用程序內存佔用
- 4. iOS clipsToBounds YES和Shadow?
- 5. 減少我的應用程序的內存佔用量
- 6. Solr內存使用 - 如何減少solr的內存佔用
- 7. 共享庫是否減少了WebSphere AppServer 7上的內存佔用?
- 8. DLR的內存佔用量是多少?
- 9. 如何減少Windows應用程序的內存佔用
- 10. 減少內存
- 11. 減少大型陌生代碼庫的內存佔用面積
- 12. 如何減少dygraphs圖形的內存佔用量
- 13. NSDocument和NSFileWrapper:減少內存佔用的策略?
- 14. 減少一個Haskell程序的內存佔用
- 15. 減少phonegap,sencha觸摸在iOS(iPad)上的內存佔用
- 16. Numpy:減少隨機數據點積的內存佔用
- 17. 減少Solaris上多個Java進程的內存佔用(UNIX)
- 18. 如何減少apache的spark內存佔用?
- 19. 減少文件操作的內存佔用
- 20. 如何減少Android中位圖佔用的內存
- 21. 儘量減少Tomcat「每個連接」的內存佔用量
- 22. 使用分配是否減少使用的內存量?
- 23. 如何減少ASP.NET MVC應用程序啓動內存佔用?
- 24. 是否可以減少MongoDB的內存使用量?
- 25. 從循環和列表減少內存佔用
- 26. PassengerSpawnMethod「智能」不會減少內存佔用?
- 27. 清空後減少std :: unordered_map內存佔用空間
- 28. 通過多處理減少內存佔用?
- 29. Visual Studio 2010 - 如何減少內存佔用
- 30. 呈現在PDFSharp和最大限度地減少內存佔用
你爲什麼不這樣做?這是一個150代表賞金;-)(但感謝提示,要儘快嘗試) – dontWatchMyProfile
一個非常公平的點;)看看我上面的編輯! – deanWombourne