Неправильное предупреждение об уменьшении из Xcode из моего метода класса - PullRequest
0 голосов
/ 05 декабря 2011

Я создал класс, чтобы заботиться о моих UILabels в 1 строке вместо 4-5, выполняя ...

+(UILabel*)BeautifyLabel:(UILabel *)label withText:(NSString *)message withFont:(NSString *)font andSize:(float)size andColor:(UIColor *)theColor{
    label.backgroundColor = [UIColor clearColor];
    label.textColor = theColor;
    label.font = [UIFont fontWithName:font size:size];
    label.text = message;
    return label;
}

И, чтобы позвонить, я делаю

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake....];
label = [CommonMethods BeautifyLabel:label withText:@"hi" withFont:@"Helvetica" andSize:13 andColor:[UIColor whiteColor]];
[self.view addSubview label];
[label release];

Анализатору, вероятно, не нравится та часть, где я передаю метку моему классу CommomMethods, но так как я инициализирую и освобождаю метку в текущем контроллере, а класс CommonMethods не делает ничего, связанного с памятью, это безопасноНе так ли?

Кроме того, может ли это быть причиной того, что Apple отклонит мое приложение?

Спасибо

Ответы [ 2 ]

2 голосов
/ 05 декабря 2011

Ваш метод BeautifyLabel не должен возвращать указатель метки.Вероятно, именно на это жалуется анализатор (но было бы неплохо увидеть текст ошибки анализатора).

Анализатор предполагает, что метод BeautifyLabel возвращает новый экземпляр метки, который затем перезаписывает тот, который вы имели в переменной метки, вызывая утечку памяти перезаписанного экземпляра (и перевыпуск возвращаемого экземпляра).

0 голосов
/ 05 декабря 2011

В коде:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake....];
label = [CommonMethods BeautifyLabel:label withText:@"hi" withFont:@"Helvetica" andSize:13 andColor:[UIColor whiteColor]];

label размещено в первой строке, во второй строке label заменено на вызов BeautifyLabel, или так думает анализатор, не зная, что делается в BeautifyLabel , Он не может предполагать, что вы возвращаете тот же объект.

Либо не делайте назначения:

[CommonMethods BeautifyLabel:label withText:@"hi" withFont:@"Helvetica" andSize:13 andColor:[UIColor whiteColor]];

или использовать другие имена указателей меток:

UILabel *labelTemp = [[UILabel alloc] initWithFrame:CGRectMake....];
label = [CommonMethods BeautifyLabel:labelTemp withText:@"hi" withFont:@"Helvetica" andSize:13 andColor:[UIColor whiteColor]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...