创建NSString结果为null

时间:2016-04-06 21:27:17

标签: objective-c nsstring objective-c-runtime

我正在尝试初始化NSString。我尝试了initWithString:,但由于NSString变为NSPlaceholderString,因此无效。我切换到UTF8string,但它返回一个空值。

以下代码:

- (void) test:(NSString*)thing {
    id (*p_objc_msgSend)(id p, SEL sel, ...);
    id (*p_objc_getClass)(const char *s);
    Class class;

    p_objc_getClass = objc_getClass;
    p_objc_msgSend = objc_msgSend;

    NSString *s;

    class = (*p_objc_getClass)( "NSString");
    //SEL init = @selector(initWithString:);
    s = (*p_objc_msgSend)(class, @selector(alloc));
    s = (*p_objc_msgSend)(s, @selector(initWithUTF8String:), "AAA");

    NSLog(@"Value of %@", s);
}

1 个答案:

答案 0 :(得分:0)

NSString是一个具有多个私有子类的类集群。 NSPlaceholderString是NSString的子类,因此您可以继续将该对象用作任何其他NSString。