我遇到了難以重現的奇怪崩潰。例如,在過去的35次應用程序中,這次崩潰發生過一次。不幸的是,我不清楚確切的步驟。SIGSEGV將塊設置爲零時
碰撞報告顯示:
SIGSEGV
Remotely-[NetworkCall handleRequestFinished]
in NetworkCall.m on Line 232
線232是:
_startBlock = nil;
和屬性被定義爲:
typedef void (^NetworkCallStartBlock)();
@property(copy, nonatomic) NetworkCallStartBlock startBlock;
的一個時間我能夠REPRO的缺少w /附加的調試器,將_startBlock打印到控制檯顯示其值在試圖分配nil時已爲零。
有什麼想法?
這意味着你設置塊而不復制它(很可能通過變量或在沒有手動副本的設置中),並且當它設置爲零時,試圖釋放過去是在堆棧上的塊。別客氣。 –
該屬性被定義爲複製雖然,所以不應該已經複製它? –
如果你有一個自定義setter,沒有。你必須複製二傳手(爲什麼你會使用monatomic?)。 –