다음 방법을 검토하고 사용 후 사전 키의 열거자를 해제해야하는지 알려주십시오. 나는 SDK 메소드에서 반환 된 변수를 언제 릴리스해야하는지 항상 객관적이고 새로운 것은 아닙니다. keyEnumerator 메소드가 autoreleased 인스턴스를 리턴한다고 가정하고, 필자가 그 작업을 마쳤을 때 신경 쓸 필요가 없다. 권리?NSDictionary : URL 인코딩
음 ... 아마도이 방법에는 다른 것이 있을까요? 당신은 또한하지 retain
을 한 경우)
#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 시간이 있습니다. 저는 "Beginning iPhone 3 Development"서적과 스탠포드 포드 캐스트를 통해 "지금부터 배우기"단계에 있습니다. 메소드가 필요한 곳으로 옮겨졌습니다. ;) 오늘 배운 교훈 : - 물건을 할당하거나 보관하지 않은 경우에는 해제하지 마십시오. - 다른 해결책이있을 경우 SDK 클래스를 확장하지 마십시오. – MacTouch