Warnung beim Entfernen / Entfernen des Attributs 'strong' von der Eigenschaft?

9

Lesen ProgrammingWithObjectiveC kann ich sagen:

  

Das strong-Attribut muss nicht explizit angegeben werden, da es der Standardwert ist.

Wenn ich das Attribut 'strong' für eine Eigenschaft in meinem Projekt so auslasse,

%Vor%

es gibt mir eine Warnung:

  

Es ist kein 'assign', 'retain' oder 'copy' Attribut angegeben - 'assign' wird angenommen

aka.

  

-Wobjc-Eigenschaft-kein-Attribut

Irgendwie scheint der Compiler zu denken, dass ich immer noch manuelle Referenzzählen mache, sonst würde es keine Warnung geben.

Auch wenn ich ein neues leeres Projekt erstelle, warnt es mich nicht, wenn es kein "starkes" Attribut gibt, also muss es etwas mit den aktuellen Projekteinstellungen zu tun haben, vielleicht sogar mit einer Flagge, die nicht erreichbar ist über die Benutzeroberfläche. Das Projekt ist ziemlich alt (~ 2 Jahre) und hat in der Zwischenzeit mehrere Migrationsschritte durchlaufen (XCode 3 & gt; 4 & gt; 5, Non-ARC & gt; ARC etc.).

Ich habe überall in den Projekteinstellungen gesucht, aber irgendwo scheint ein Häkchen oder etwas zu fehlen.

Wer hat das gleiche Problem?

    
stk 24.03.2014, 15:06
quelle

2 Antworten

3

Es wurde gerade danach gesucht, und die nächste Build-Eigenschaft wäre CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES , von der ich bezweifle, dass sie irgendeine Beziehung hat.

Sie können prüfen, welche Standardparameter Ihr Ziel überschreibt, indem Sie in der Ansicht "Buildeinstellungen" die Optionen "Alle" und "Ebenen" auswählen.

Überprüfen Sie die Warnungen, die standardmäßig auf Nein gesetzt sind, aber von Ihrem Ziel in Ja geändert werden.

    
Rivera 01.04.2014 08:38
quelle
1

Stellen Sie sicher, dass Sie die neueste Version von Xcode haben. Dies ist ein neues Compiler-Feature und wie es funktioniert hat sich in den letzten Updates mehrmals geändert.

Stellen Sie sicher, dass Ihr Projekt so konfiguriert ist, dass es clang / llvm und nicht gcc verwendet. Ich kann mich nicht erinnern, ob gcc ARC überhaupt unterstützt (kann jemand etwas dazu sagen?), Aber es unterstützt definitiv nicht alle Funktionen. Und ein altes Xcode-Projekt wird gcc verwenden, wenn Sie es nicht geändert haben. Alle kürzlich vorgenommenen Sprachänderungen werden nur in clang / llvm implementiert.

Haben Sie ARC aktiviert? Das wird das Verhalten ändern, denn wir werden aufpassen, dass ARC projektweit oder für bestimmte Dateien aktiviert oder deaktiviert werden kann.

Einige Änderungen in Xcode gelten nur für neue Projekte, und alte Projekte sind so konfiguriert, dass sie deaktiviert werden. Werfen Sie einen Blick auf die Einstellungen für alles, was mit ARC zu tun hat, das nicht auf den Standardwert eingestellt ist.

    
Abhi Beckert 28.03.2014 16:32
quelle