[英]Big time Leaking in Objective-C Category
我創建了一個自定義NSString類別,它使我可以找到其他兩個字符串之間的所有字符串。 我現在遇到的問題是,我的腳本中泄漏出很多kB。 請參見下面的代碼:
#import "MyStringBetween.h"
@implementation NSString (MyStringBetween)
-(NSArray *)mystringBetween:(NSString *)aString and:(NSString *)bString;
{
NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
NSArray *firstlist = [self componentsSeparatedByString:bString];
NSMutableArray *finalArray = [[NSMutableArray alloc] init];
for (int y = 0; y < firstlist.count - 1 ; y++) {
NSString *firstObject = [firstlist objectAtIndex:y];
NSMutableArray *secondlist = [firstObject componentsSeparatedByString:aString];
if(secondlist.count > 1){
[finalArray addObject:[secondlist objectAtIndex:secondlist.count - 1]];
}
}
[autoreleasepool release];
return finalArray;
}
@end
我承認我並不擅長釋放對象,但是我相信NSAutoreleasePool可以為我處理事情。
正在泄漏的行:
NSMutableArray *secondlist = [firstObject componentsSeparatedByString:aString];
手動釋放第二列表會引發異常。
提前致謝!
不,這是泄漏的線:
NSMutableArray *secondlist = [[NSMutableArray alloc] init];
而且這並不是什么大的泄漏(只是一個空的可變數組)。 不過,不要那樣做。
特別是,該行:
secondlist = [[firstlist objectAtIndex:y] componentsSeparatedByString:aString];
將引用分配給空可變數組。
另外, FinalArray
應該命名為finalArray
。
finalArray正在泄漏。 您應該在釋放它之前自動釋放它,但是請確保在分配自動釋放池之前或釋放它之后進行釋放。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.