refactoring zu arc führt zu "synthesize of 'weak' Eigenschaft ist nur im Arc oder GC Modus erlaubt"

8

Ich verwende xcode 4.4.1 für iOS Ziel 5.1 Ich habe mein Projekt mit ARC gestartet, und in der Mitte des Projekts habe ich meinem Projekt eine Nicht-Arc-Drittanbieter-Quelle hinzugefügt. An diesem Punkt habe ich entschieden, das Refactoring in xcode zu versuchen, und ein Fehler tritt auf. es kommt von einem meiner ursprünglichen Quellcodes.

Ich habe eine Eigenschaft von (nichtatomisch, schwach) und ich habe es synthetisiert == & gt; Die Synthese einer "schwachen" Eigenschaft ist nur im ARC- oder GC-Modus erlaubt.

Ich bin puzzeled - ich benutze Arc und es beschwert sich, dass es nur in Arc erlaubt ist?

Im Moment habe ich die Drittanbieter-App von einem anderen Projekt refactored und kopiert, damit mein Projekt funktioniert, aber das obige ist eine Frage, die ich immer noch gerne verstehen würde. Vielen Dank! (übrigens, wenn ich in Arc umwandeln, heißt es, dass das Ziel derzeit ARC verwendet)

    
unpluggedk 15.09.2012, 02:48
quelle

3 Antworten

2

Das Problem ist, dass Sie es bereits als ARC-Projekt eingerichtet haben und aus irgendeinem Grund versuchen, es erneut zu konvertieren. Ich kann nur davon ausgehen, dass der Prozess in diesem Stadium keine schwachen Referenzen erwartet. Wenn Sie sie auf Assign setzen und dann in ARC konvertieren, werden Sie sehen, dass sie Ihnen dann vorschlägt, sie zu schwach zu ändern.

    
AppHandwerker 23.10.2012 12:40
quelle
1

Ich hatte das gleiche Symptom mit Xcode 4.6.3 Targeting iOS 6.1. Ich habe eine Nicht-ARC-Klasse von einem anderen Projekt importiert und über das Refactor-Menü konvertiert, um nachfolgende Builds in einer bereits existierenden Klasse mit dem angezeigten Fehler fehlzuschlagen ("Synthetisierung der 'schwachen' Eigenschaft ist nur in Arc oder GC erlaubt) Modus ").

Die Projekteigenschaften sagten klar, dass es immer noch ein ARC-Projekt war, aber der Compiler schien vergessen zu haben, dass dies für die fragliche Klasse der Fall war.

Ich habe das Problem gelöst, indem ich die Eigenschaft auf "stark" gesetzt und diese Klasse über das Refactor-Menü in ARC konvertiert habe. Es überrascht nicht, dass es mir sagte, dass keine Änderungen notwendig sind, aber ich habe einen Speichern-Knopf angeboten, den ich angeklickt habe. Ich konnte dann die Eigenschaft zurück auf "schwach" ändern und das Projekt kompilieren. (Ich nehme an, dass einige Metadaten irgendwo auf dem Weg aus dem Takt geraten sind.)

BEARBEITEN: Ich musste schließlich andere ARC-konforme Klassen zu ARC 'refactorieren', obwohl sie, wenn sie kompiliert wurden, Warnungen erzeugt und Abstürze in meiner App verursacht haben. Ich denke, die Moral der Geschichte ist, dass die Einbeziehung Ihres gesamten Projekts in das Refactoring sicherer sein könnte ...

    
Buzzwig 28.08.2013 15:51
quelle
-1

stattdessen verwenden:

%Vor%

* Hinweis - Dies ist nicht dasselbe wie schwach, aber sehr ähnlich. Weak setzt das Objekt auf null, Zuweisung nicht.

    
dacopenhagen 15.09.2012 16:28
quelle

Tags und Links