2015-11-05 52 views
1

如果UIPasteboard對象設置爲「persistent」,那麼UIPasteboard的項目似乎存儲在數據庫或類似的東西中。那麼有沒有什麼提示可以找到數據存儲在系統中的位置? 越獄。 在此先感謝。UIPasteboard存儲數據在哪裏?

+1

https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIPasteboard_Class/index.html – LoVo

+0

@LoVo,問題有「越獄」標籤。官方文件是無用的,因爲答案應該包含內部細節。 – creker

回答

3

粘貼板由位於/System/Library/Frameworks/UIKit.framework/Support/pasteboarddcom.apple.UIKit.pasteboardd守護進程管理。它不會一直運行,只有當有人真的需要它時,即使用複製/粘貼。

它使用持久性存儲 - /var/mobile/Library/Caches/com.apple.UIKit.pboard/pasteboardDB二進制屬性列表。即使你使用SIGKILL守護進程,它也會從數據庫中恢復粘貼板內容。

pasteboardDB根對象是NSArray。每個元素都是綁定到特定包ID和名稱的NSDictionary對象。例如,一般複製/粘貼使用共享存儲 - 字典有bundle->com.apple.UIKit.pboardname->com.apple.UIKit.pboard.general鍵。在items鍵下有一組粘貼板項目。你可以嘗試複製一些文本,你會發現它存在爲未加密的UTF8字符串存儲爲NSData對象。

+0

你是對的。這是非常正確的。精彩。 –