簡體   English   中英

重構為弧導致“僅在弧或gc模式下允許合成'弱'屬性”

[英]refactoring to arc results in “synthesize of 'weak' property is only allowed in arc or gc mode”

我將xcode 4.4.1用於iOS目標5.1我已經使用ARC啟動了我的項目,並且在項目的中間,我向項目中添加了一些非弧形的第三方源代碼。 在這一點上,我決定嘗試在xcode中進行重構,並且發生錯誤。 它來自我的原始源代碼之一。

我具有(非原子的,弱的)屬性,並且已經合成==>“弱”屬性的合成僅在ARC或GC模式下允許。

我很困惑-我使用的是arc,它抱怨只允許在arc中使用?

目前,我已經從其他項目中重構了第三方應用程序,並將其復制到我的項目中,但是上面的問題我仍然想理解為什么。 謝謝! (順便說一句,當我確實轉換為圓弧時,它表示目標當前使用ARC)

聽起來問題是您已經將其設置為ARC項目,並且由於某種原因而試圖再次進行轉換。 我只能假設該過程不會在此階段期望弱引用。 如果將它們設置為Assign,然后轉換為ARC,您會看到它建議您將它們更改為弱。

使用針對iOS 6.1的Xcode 4.6.3有相同的症狀。 我從另一個項目中引入了一個非ARC類,並通過“重構”菜單對其進行了轉換,以使隨后的構建在先前存在的類上失敗,並出現錯誤(“ arge或gc僅允許合成'weak'屬性)模式”)。

項目屬性明確表示它仍然是ARC項目,但編譯器似乎已經忘記了所涉及類的情況。

我通過將屬性設置為“ strong”並通過“重構”菜單將該類轉換為ARC來解決了這個問題。 毫不奇怪,它告訴我沒有必要進行任何更改,但確實提供了我單擊的“保存”按鈕。 然后,我能夠將屬性更改回“弱”並編譯項目。 (我認為在此過程中某處某些元數據不同步。)

編輯:我最終不得不將其他ARC兼容類“重構”到ARC,盡管它們編譯它們會生成警告並導致我的應用程序崩潰。 我認為這個故事的寓意是,將您的整個項目包括在重構中可能會更安全。

改為使用:

@property(nonatomic,assign)

*注意-這與弱點不一樣,但是非常相似。 弱也將對象設置為nil,assign不設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM