2012-02-21 95 views
0

有沒有一種方法可以在運行時在objective-c中查找殭屍?
我正在尋找一種方法來防止對象調用殭屍上的方法,有沒有任何方法來檢測一個沒有使應用程序崩潰?
我知道在ARC iOS5下的弱引用和常識編程實踐。
我在想,一種方式可能會問對象的大小(我知道也許「內部」有隻是參考),但如果對象仍然存在,它應該給一個值,如果它不可能只是單一的指針大小。
使用malloc_size(pointerToObject)
它可以工作嗎?運行時檢測殭屍

更新: 我不知道該怎麼辦好儀器殭屍檢測

+5

你可以直接調用'brains()',但是你的堆棧跟蹤中可能會有一堆'umbrellaCorporation'條目。 – Polynomial 2012-02-21 13:31:16

+0

大聲笑可能這意味着我得到的T - 病毒 – Andrea 2012-02-21 13:35:31

回答

2

我不認爲安德烈正在問如何運行儀器來檢測殭屍,我認爲她想要防止在運行時調用已處理的實例。我不確定在這種情況下malloc大小會返回什麼。我認爲你提出的任何與NSZombies(這是永遠不會真正免費的實例)做過的事情都會變得噱頭,只會在部分時間內發揮作用。我認爲你最好的最好的方式就是用工具進行無聊的舊編程和分析,以防止進行這些調用,而不是在運行時捕捉錯誤。

+0

嗨屋頂,你是對的,我不看如何運行儀器會議。我做了很少的測試,但我更喜歡,但在大多數情況下,它似乎工作,但我仍然沒有遵守規則。如果對象被釋放,malloc_size返回一個值爲0的值,但並不總是我需要理解該規則。可能最有效的解決方案將使用代理對象,該對象爲我需要「調零」的任何對象轉發方法。但我正在尋找一個快速解決方案。 – Andrea 2012-02-21 15:37:23

+0

那麼malloc_size函數沒有可預測的行爲,使用代理可能是一個解決方案,但好的編程規則總是最好的[link] http://borkware.com/rants/agentm/elegant-delegation/ – Andrea 2012-04-12 05:48:31

0

嘗試運行與儀器中的應用,並選擇「植物大戰殭屍」的模板。

0

在方案菜單上(左上角,運行/停止旁邊)。選擇「編輯方案...」。將出現一張表。在那裏選擇運行/調試方案。選擇中心窗格上的「診斷」選項卡。檢查殭屍。