Zai*_*ani 11 objective-c ios objective-c-category ios5
我有一个NSString类class(NSString+URLEncoding.h).我遇到了未知的选择器崩溃,因为我调用类别方法的字符串已经被NSCFConstantStringiOS 优化.
-[__NSCFConstantString URLEncodedString]: unrecognized selector sent to instance 0x290174
Run Code Online (Sandbox Code Playgroud)
我学到的NSCFConstantString与NSCFStringiOS 5中的优化来自:
http://www.cocoanetics.com/2012/03/beware-of-nsstring-optimizations/
是否有人知道如何让NSString类别包含Constant字符串甚至强制var成为一个NSString/NSCFString而不是一个NSCFConstantString?
干杯,Z
-编辑-
-ObjC -all_load已经实现我正在为ShareKit 2.0添加共享服务
标题:
@interface NSString (OAURLEncodingAdditions)
- (NSString *)URLEncodedString;
Run Code Online (Sandbox Code Playgroud)
执行:
@implementation NSString (OAURLEncodingAdditions)
- (NSString *)URLEncodedString
{
NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)self,
NULL,
CFSTR("!*'();:@&=+$,/?%#[]"),
kCFStringEncodingUTF8);
[result autorelease];
return result;
}
Run Code Online (Sandbox Code Playgroud)
Lil*_*ard 12
链接器存在一个问题,可能导致其死代码剥离完全忽略任何仅包含obj-c类别(或其他未引用的)的目标文件.从理论上将-ObjC标志传递给链接器应该解决这个问题,但这似乎并不总是有效.您可以通过提供-all_load链接器标志来解决此问题,这将导致链接器始终链接到所有目标文件中.
请注意,-all_load如果您的类别是您所包含的子项目或库的一部分,则可能必须设置父项目.
更新:我认为-ObjC现在已经可靠并且已经存在多年,因此您可以停止使用-all_load此问题.
| 归档时间: |
|
| 查看次数: |
3347 次 |
| 最近记录: |