Frage

Ich Analyse Objective-C iPhone-Projekt mit LLVM / Clang statische Analyzer. Ich erhalte zwei gemeldete Fehler, aber ich bin mir ziemlich sicher, dass der Code korrekt ist.

1) Methode.

+ (UILabel *)simpleLabel
{
  UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 10, 200, 25)];
  label.adjustsFontSizeToFitWidth = YES;
  [label autorelease]; // Object with +0 retain counts returned to caller where a +1 (owning) retain count is expected.
  return label;
}

2) [NSClassFromString (...) alloc] kehrt retainCount + 1. Bin ich richtig?

Class detailsViewControllerClass = 
    NSClassFromString(self.detailsViewControllerName);

UIViewController *detailsViewController = 
    [[detailsViewControllerClass alloc]
        performSelector:@selector(initWithAdditive:) withObject:additive];

[self.parentController.navigationController 
    pushViewController:detailsViewController animated:YES];
[detailsViewController release]; // Incorrect decrement of the reference count of an object is not owned...

Sind diese einige Probleme Clang oder ich bin völlig falsch in diesen beiden Fällen?

War es hilfreich?

Lösung

korrigieren Ihr Code sieht in beiden Fällen. Für nicht. 2, Sie sind verwirrend wahrscheinlich den Analysator von performSelector anstelle von einfachen initWithAdditive mit (gibt es einen bestimmten Grund, warum Sie einen Selektor verwenden?). Ich bin über keine nicht sicher. 1, aber vielleicht versuchen Sie es mit [[[UILabel alloc] init...] autorelease] Initialisierung statt separat von autoreleasing, und sehen, ob das Problem weiterhin besteht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top