0

我創建了一個類(MyClass)並需要它的幾個實例,每個實例都會包含多個定時器,文本字段和標籤。由於ARC,當定時器失效時,目標被取消分配,但我有時使它們無效以重新啓動它們,所以我不能讓它們釋放。所以我去了我的AppDelegate(這是創建MyClass實例的類)並將MyClass聲明爲強屬性。 @property (strong) MyClass *myInstance;這部分工作的問題是,每當我創建另一個實例時,以前的實例失去它的引用,並且如果我嘗試在舊實例中重新啓動NSTimer,我會遇到BAD ACCESS。如果我重新啓動最後定時器沒有問題。獨立重用已聲明的強屬性

我相信,既然myInstance是一個屬性,每當我做一個新的AppDelegate重寫舊的,失去舊的引用。我需要能夠保持強大的財產,但不知何故使它爲每個實例獨立工作,或找到另一種方式使myInstance成爲強有力的參考,而不必成爲財產。

+0

無論如何,這種設計非常脆弱。 NSTimers並不意味着無效並重新啓動。你應該讓你的回調忽略滴答,當他們打算被「暫停」或只是創建新的。 – Chuck 2012-01-13 21:39:34

+0

@Chuck,你是什麼意思忽略蜱?如何? – Elbimio 2012-01-13 22:29:19

+0

@Elbimio:不要讓計時器失效,讓它開火。當它發生時,檢查你是否已經暫停,並且只做那些如果你沒有的時候是週期性的。 – 2012-01-13 23:03:36

回答

3

將您的實例放入容器,如NSSet或NSArray。

+0

輝煌。謝謝! – Elbimio 2012-01-13 23:02:22