1
我只是更新一個非常古老的項目到ARC(2017年 - 我知道)。爲什麼ARC轉換將「弱」裝飾器添加到「只讀」屬性?
我注意到,對於readonly
屬性聲明,它增加了一個weak
修飾符。例如:
// Before conversion to ARC:
@property (nonatomic, readonly) NSString *defaultName;
// After conversion to ARC:
@property (weak, nonatomic, readonly) NSString *defaultName;
有人可以解釋爲什麼它這樣做嗎?
當應用於readonly
屬性時,有幾個SO關於weak
,strong
和copy
的含義的問題和解答。一個例子是this這似乎與this直接抵觸 - 我真的不明白它是如何合理的,因爲他們似乎只適用於設置屬性,並且readonly
有一個明確的getter方法。
感謝您回答現在大多數讀者對最不感興趣的東西!它是有道理的,它選擇「弱」,因爲沒有其他說明符給出,這是默認的,謝謝。所以,在'readonly'情況下,ARC轉換器可以將其保留在內存屬性中,但不會。指定它是多餘的,但沒有問題? – Benjohn
@Benjohn它不能忽略這個屬性,因爲這可能是錯誤的('assign'是舊的默認值,新的默認值是'strong')。該屬性可能被重寫爲'readwrite',然後內存屬性必須相同... – Sulthan
這很有道理。好答案 – adev