0

私には方法があり、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 のメモリをどこで解放する必要がありますか? もう 1 つのメソッドを作成するか、ここで解放するか、このクラスの dealloc グローバル メソッドに配置しますか?

4

1 に答える 1

7

命名規則に正しく従ったと仮定すると(そして、それはおそらくかなり大きな飛躍です)、答えは次のようになります。

plistPath : いいえ
plistXML : いいえ
errorDesc : いいえ
temp : いいえ

ルールは、あなたalloc copyまたはretainそれをリリースする必要がある場合です(newとしてカウントされますalloc

于 2013-04-01T07:00:56.477 に答える