iOS常见内存泄露错误

iOS常见内存泄露错误

常见内存错误
1.memory leak

一般情况是,在某个方法的中通过new或者alloc,copy,create出一个新的对象之后,没有在该方法的最下方进行release操作。

1
2
3
4
5
-(void)func{
NSObject *obj = [[NSObject alloc] init];
[obj someMethod];
return;
}

2.bad release

在某个方法的对不是通过new或者alloc,copy,create创建的新对象进行了一次release操作。

1
2
3
4
5
-(void)func:(NSObject*)obj{
[obj someMethod];
[obj release];
return;
}

3.nil argument

对NSArray或者NSDictionary对象传入一个空指针。在代码中首先创建了一个某类型的空指针,然后在下面的switch或者ifelse中对指针赋值。然后将对象传入一个字典或者数组中。如果没有做default判断,然后将一个nil指针传入array中,造成crash

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-(void)func{
NSString *s = nil;
switch Type{
case 1:
s = @"";
break;
case 2:
s = @"";
break;
case 3:
s = @"";
break;
}
NSArray *a = @[s];
}