加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 03:25:07 所属栏目:百科 来源:网络整理
导读:我有一个NSString类别类(NSString URLEncoding.h). 我正在运行和未知的选择器崩溃,因为我调用category方法的字符串已经被iOS优化为NSCFConstantString. -[__NSCFConstantString URLEncodedString]: unrecognized selector sent to instance 0x290174 我从iOS
我有一个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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读