У меня есть класс категории NSString
(NSString+URLEncoding.h
).
Я столкнулся с ошибкой и неизвестным селектором, потому что строка, которую я вызываю методом категории, была оптимизирована в NSCFConstantString
iOS.
-[__NSCFConstantString URLEncodedString]: unrecognized selector sent to instance 0x290174
Я узнал об оптимизации NSCFConstantString
vs. NSCFString
в iOS 5:
http://www.cocoanetics.com/2012/03/beware-of-nsstring-optimizations/
Кто-нибудь знает, как я могу получить категорию NSString для включения строк Constant или даже заставить var быть NSString/NSCFString
, а не NSCFConstantString
?
Cheers, Z
-edit -
- Флаги компоновщика
-ObjC -all_load
уже реализованы - NSString + URLEncoding.m включен в источники компиляции целей.
- NSString + URLEncoding.m реализует метод URLEncodedString.
- Проверено для зомби.
Я добавляю службу общего доступа к ShareKit 2.0
Заголовок:
@interface NSString (OAURLEncodingAdditions)
- (NSString *)URLEncodedString;
реализация:
@implementation NSString (OAURLEncodingAdditions)
- (NSString *)URLEncodedString
{
NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)self,
NULL,
CFSTR("!*'();:@&=+$,/?%#[]"),
kCFStringEncodingUTF8);
[result autorelease];
return result;
}