自动释放或不自动释放

Joo*_*ark 12 iphone objective-c

在"核心数据编程指南"的以下代码示例中,NSFetchRequest是使用自动释放创建的,而NSSortDescriptor不是使用自动释放创建的.为什么不使用autorelease创建NSSortDescriptor?这是一个偏好的问题吗?

NSManagedObjectContext *moc = [self managedObjectContext];    
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Employee" 
                                                     inManagedObjectContext:moc];

NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:entityDescription];
// Set example predicate and sort orderings...
NSNumber *minimumSalary = ...;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(lastName LIKE[c]'Worsley') AND (salary > %@)", minimumSalary];    
[request setPredicate:predicate];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"firstName" 
                                                               ascending:YES];
[request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];
[sortDescriptor release];
NSError *error;
NSArray *array = [moc executeFetchRequest:request error:&error];
if (array == nil){
    // Deal with error...
}
Run Code Online (Sandbox Code Playgroud)

Voi*_*ter 35

当你自动发布时,你基本上会说:"我不再需要这个,但是其他任何人都可以自由选择它(在自动释放池耗尽之前)".当你明确地重新发送你所说的一个对象时:"我不再需要它了,除非其他人已经另有说明(获得),否则应该立即解除分配."

因此,自动释放通常不是错误的.当您想要将对象传递回邮件的发件人而不要求发件人负责释放对象时,它是必需的.


Tec*_*Zen 26

自动释放或不自动释放

是个问题.

对于编码人员来说是否更加高贵,他们会遭受记忆泄漏的吊索和箭头,或者用手指对抗大量的指针并保留它们,结束它们......这是一个虔诚的完美的祝福!是啊,有擦!...对于那些过度释放的对象,当我们引用不存在的对象时,可能会发生什么崩溃.

我忍不住了.我会接受搜索.我一点儿都不后悔!