Может кто-нибудь, пожалуйста, рассмотрите следующий метод и скажите мне, нужно ли освобождать перечислитель для ключей словаря после его использования? Я новичок в объекте c и не всегда уверен, когда выпустить переменные, возвращаемые с помощью методов SDK. Я полагаю, что метод keyEnumerator возвращает экземпляр с автореализацией, поэтому мне не нужно заботиться об этом, когда я закончил с ним. Правильно?NSDictionary: URL-кодирование
Хм .. может быть, что-то еще не так в этом методе? ;)
#import "NSDictionaryURLEncoding.h"
#import <Foundation/NSURL.h>
@implementation NSDictionary(URLEncoding)
-(NSString *)urlEncoded
{
NSEnumerator *keyEnum = [self keyEnumerator];
NSString *currKey;
NSString *currObject;
NSMutableString *result = [NSMutableString stringWithCapacity: 64];
while ((currKey = [keyEnum nextObject]) != nil)
{
if ([result length] > 0)
{
[result appendString: @"&"];
}
currObject = [[self objectForKey: currKey] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
currKey = [currKey stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[result appendString: [NSString stringWithFormat:@"%@=%@", currKey, currObject]];
}
return result;
}
@end
спасибо. Да, есть много спецификаций, которые мне все еще нужно читать, я знаю. К сожалению, в этот день есть только 24 часа. Я просто через книгу «Начало разработки iPhone 3» и подкасты Стэнфорда, а теперь и на этапе «обучения». Я переместил метод в класс, где это необходимо. ;) Уроки, полученные сегодня: - Если вы не выделили или не сохранили вещи, не волнуйтесь о их освобождении - Никогда не расширяет классы SDK, если есть другое решение – MacTouch