2016-04-06 75 views
1

NSString'u başlatmaya çalışıyorum. initWithString:'u denedim, ancak bu NSString bir NSPlaceholderString olur, çünkü bu geçersiz olur. UTF8string'a geçtim, ancak boş bir değer döndürüyor. AşağıdaNSString sonuçlarının oluşturulması null

kodu:

- (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); 
} 
+3

Bunu neden böyle garip bir şekilde yapıyorsunuz? Neden sadece yukarıdakilerin yerine NSString * s = @ "AAA"; '? – rmaddy

+1

NSPlaceholderString' ile ilgili sorun nedir? – Sulthan

+0

Bu uygulama ile dize oluşturmuyor –

cevap

0

NSString birden özel alt sınıf ile bir sınıf kümesidir. NSPlaceholderString, NSString'in bir alt sınıfıdır, böylece bu nesneyi başka bir NSString olarak kullanmaya devam edebilirsiniz.