Утечки памяти в цвете UICOLOR методом RGB

Мне нужно разметить строку и получить значения RGB, чтобы создать UICOlor, ниже приведен код,

NSString* text = @"1.0,1.0,1.0";
NSArray *chunks = [text componentsSeparatedByString:@","];
return [UIColor colorWithRed:([[chunks objectAtIndex:0] floatValue]/256.0)
                       green:([[chunks objectAtIndex:1] floatValue]/256.0)
                        blue:([[chunks objectAtIndex:2] floatValue]/256.0)
                       alpha:1];

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


Я нарушаю код, но он все еще показывает утечку в строке, где я инициализирую объект UIColor.

Прототип функции:

+(UIColor*) GetUIColorFromText:(NSString*)text;

В основном я получаю три странные утечки памяти, я не знаю, связаны ли они между собой или нет.

    1. I am getting a leak when i push my view controller to navigation controller, i.e
    MyController *filter = [[MyController alloc] initWithNibName:@"MyController" bundle:nil];
                [self.navigationController pushViewController:filter animated:YES];
                [filter release] ;
    
    this leak get removed when I used animated:NO , i.e
    MyController *filter = [[MyController alloc] initWithNibName:@"MyController" bundle:nil];
                [self.navigationController pushViewController:filter animated:NO];
                [filter release] ;
    2. Leak which i mention in my question.
  1. В приведенной ниже строке кода также показана утечка памяти в приборе, я запускаю код на IOS 3.12, а также на 4, но эти три утечки возникают постоянно,
[MyBtn.titleLabel setFont:[UIFont boldSystemFontOfSize:12]];

person Mohammad Salman    schedule 16.08.2010    source источник


Ответы (2)


См. Принятый ответ на iphone - утечка UIColor ... необходимо выпустить объект?

На самом деле это не утечка, скорее всего, это ложное срабатывание.

person Micah Hainline    schedule 08.09.2011

Мне этот код кажется прекрасным - я не вижу случайных выделений, поэтому возможно, что предупреждение неверно. Возможно, стоит разбить код для дальнейшей локализации предупреждения, например:

NSString* text = @"1.0,1.0,1.0";
NSArray *chunks = [text componentsSeparatedByString:@","];
NSString *redStr = [chunks objectAtIndex:0];
float red = [redStr floatValue]/256.0;
NSString *greenStr = [chunks objectAtIndex:1];
float green = [greenStr floatValue]/256.0;
NSString* blueStr = [chunksObjectAtIndex:2];
float blue = [blueStr floatValue]/256.0;

UIColor* rgb = [UIColor colorWithRed:red green:green blue:blue alpha:1.0];

return rgb;

Это должно, по крайней мере, точно определить, где именно находится проблема. Однако я почти уверен, что в этом коде нет реальной утечки.

Еще пара мыслей:

Это полный объем кода? Предположительно, вы не используете жестко запрограммированный @"1.0,1.0,1.0" в долгосрочной перспективе, так есть ли что-то еще поблизости, что может вызвать проблему?

Как называется метод? Я читал здесь, что статический анализатор принимает во внимание соглашение об именах NARC при попытке выяснить, какой должна быть семантика. Я понятия не имею, насколько это верно и как это может вызвать вашу проблему здесь, но есть очень малая вероятность того, что это может способствовать ошибочному предупреждению об утечке.

РЕДАКТИРОВАТЬ: на основании вашей дополнительной информации, я в недоумении. Мне все три фрагмента кажутся нормальными. Что вы используете для обнаружения этих утечек - статический анализ или время выполнения? В последнем случае вы работаете на тренажере или устройстве? Предоставляется ли какая-либо другая информация?

person walkytalky    schedule 16.08.2010
comment
Я также полностью проиграл в этих трех утечках, прямо сейчас я проверил эти утечки на приборах, и я с нетерпением жду возможности проверить эти утечки с помощью статического анализа. Я использую устройство, чтобы проверить все эти утечки. Я думаю, мне следует обратиться в службу технической поддержки Apple по поводу этих утечек, поскольку все эти утечки выглядят странно. - person Mohammad Salman; 17.08.2010