Objective-c – iOS 5:使NSString类别包括NSCFConstantString?

前端之家收集整理的这篇文章主要介绍了Objective-c – iOS 5:使NSString类别包括NSCFConstantString?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个NSString类别类(NSString URLEncoding.h).
我正在运行和未知的选择器崩溃,因为我调用category方法的字符串已经被iOS优化为NSCFConstantString.
-[__NSCFConstantString URLEncodedString]: unrecognized selector sent to instance 0x290174

我从iOS 5中了解了NSCFConstantString与NSCFString优化:
http://www.cocoanetics.com/2012/03/beware-of-nsstring-optimizations/

有人知道我如何获得NSString类别包括Constant字符串,甚至强制var为NSString / NSCFString而不是NSCFConstantString?

干杯,
ž

-编辑-

>链接器标志-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;
}

解决方法

链接器有一个问题,可能导致其死码剥离完全省略只包含obj-c类别的任何对象文件(否则未被引用).理论上将-ObjC标志传递给链接器应该会解决这个问题,但这似乎并不总是起作用.您可以通过提供-all_load链接器标志来解决此问题,这将导致链接器始终链接到所有对象文件中.

请注意,如果您的类别是您在某个地方包含的子项目或库的一部分,则可能必须在父项目上设置-all_load.

原文链接:https://www.f2er.com/c/111526.html

猜你在找的C&C++相关文章