objective-c中自己创建的对象为什么不能调用release

dealloc方法,本就不应该手动调用.

你自己创建的对象,看你代码怎么写的了.
例子:
NSString *str1 = [NSString stringWithString:@"abc"];
NSString *str2 = [[NSString alloc]initWithString:@"abc"];

str1是用类方法构建的,在我们的代码里它没有用到alloc这个方法,
所以你就不能再对str1进行release操作了.

相反, str2,它在生成时,我们用了alloc方法,那么回收的时候, 要对应的写上release,
或者autorelease.

所以,简单的记法就是:
对于alloc,copy 出来的对象,都要进行release/autorelase
否则不要.
另外一条,所有对象的dealloc方法,都不能直接调用.

自己通过alloc 和init创建的,可以release。
例如:
UIVIEW * selfView = [UIView alloc] initWith.......]; //这里是需要你自己release的。

UIView * selfView = [UIView viewWithTag:]; //这里直接引用了类的成员消息。不需要你release。

永远不要调用dealloc
posted on 2016-04-10 19:57  洛易  阅读(252)  评论(0编辑  收藏  举报