Написвам функция като следното, за да създам CGPath:
+(CGPathRef)CGPathCreateRoundrect:(CGRect)rect radius:(CGFloat)radius {
CGMutablePathRef path = CGPathCreateMutable();
......
CGPathCloseSubpath(path);
return path;
}
Анализаторът казва, че първият ред на код създава aобект, който е потенциално протекъл. Но аз искам да създам нов обект в тази функция и да прехвърля собствеността на обаждащия се. И името на функцията съдържа ключовата дума „Създаване“. Това грешка ли е "Анализатор"?
Отговори:
-1 за отговор № 1Това се случва, защото според разбирането на съставителя a +()
метод винаги ще връща автоматично пусната променлива, която не е във вашия случай.
3 за отговор № 2
Тук анализаторът действа правилно. Собствеността се прехвърля само чрез назовани методи copy
, init
или някаква негова разновидност.
Върнатият обект трябва да бъде пуснат автоматично.