• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Fehlermeldung: Capturing self strongly...

Sofaninc

Gala
Registriert
01.08.14
Beiträge
50
Hallo

Ich bekomme folgende Fehlermeldung, wenn ich in der ViewDidLoad einem Label den Text von einem String zuweisen möchte:

-Capturing self strongly in this block is likely to lead to a retain cycle

Ich hab schon gegoogelt, aber nichts verständliches herausgefunden.

Gruss
 

OneCent

Becks Apfel (Emstaler Champagner)
Registriert
28.03.11
Beiträge
335
Da muss noch mehr sein... Code meine ich ;)

P.S. ich finde Variablen sollten nicht mit Grossbuchstaben anfangen
 

Sofaninc

Gala
Registriert
01.08.14
Beiträge
50
Normalerweise schreibe ich die Variablen auch klein, aber ich musste hier noch kurz den Code umschreiben und achtete nicht genau drauf.

Der gewünschte Code :)

Bildschirmfoto 2014-10-09 um 08.31.54.png

Auch hier bitte nicht auf Kreativität der Namen achte, hab noch kurz den Code umgeschrieben
 

RUMTom

Grahams Jubiläumsapfel
Registriert
11.09.04
Beiträge
104
Wenn du mit der Maus auf den Fehler klickst, erscheint dann nicht so etwas wie: "Fix it "self->" ?
 

OneCent

Becks Apfel (Emstaler Champagner)
Registriert
28.03.11
Beiträge
335
Der Grund ist, im Block wird die Variable mit self.benutzernameLabel gesehen, auch wenn self nicht dort steht.

ein guter Artikel... http://www.informit.com/articles/article.aspx?p=2207347

Although Xcode is getting better and better at spotting block issues (as in Figure 1), block hygiene still rests on your shoulders. Here are the key rules for working with notification handler blocks.

  • To avoid retain cycles, establish a weak self reference outside any block that uses self in its code.
__weak typeof(self) weakSelf = self
  • Create a strong reference to that weak version as the first line in your block. If selfstill exists when the block starts to execute and hasn’t fallen back to nil, this next line ensures it persists throughout the block’s execution lifetime.
__strong typeof(self) strongSelf = weakSelf;
  • Translate all direct and indirect self references to strongSelf. Instead of calling [self method], use [strongSelf method]. For properties avoid using calls like the _originalTransform you saw in Figure 1. Replace these with strongSelf.origialTransform dot notation.
damit kannst du deine die Variablen mit

strongSelf.benutzernameLabel.... ansprechen.