[英]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.