在没有ARC的情况下,我需要在iOS中释放内存?

时间:2013-04-01 06:58:29

标签: ios objective-c memory-management

我有一个方法,不要使用ARC:

-(void)readAppPlist
{
    NSString *plistPath = [self getDataFileDestinationPath];
    NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath];
    NSString *errorDesc = nil;
    NSPropertyListFormat format;
    NSMutableDictionary *temp = (NSMutableDictionary *) [NSPropertyListSerialization propertyListFromData:plistXML mutabilityOption:NSPropertyListMutableContainersAndLeaves format:&format errorDescription:&errorDesc];
    if (!temp) {
        NSLog(@"Error reading plist: %@, formatL %d", errorDesc, format);
    }
    items = [[temp objectForKey:@"Items"] mutableCopy];
}

根据内存管理规则,我需要为变量plistPath,plistXML,errorDesc,temp?释放内存?我应该另外一个方法,在这里发布它们或者只是将它们放入这个类的dealloc全局方法中吗?

1 个答案:

答案 0 :(得分:7)

假设您正确地遵循了命名约定(这可能是一个相当大的飞跃),答案将是:

plistPath:没有 plistXML:没有 errorDesc:没有 temp:没有

规则是,如果您alloc copyretain,则必须将其释放(new计为alloc