打印在autoreleasepool中设置的NSString的值

问题描述 投票:0回答:1

我正在尝试NSLog NSString的值,这是@autoreleasepool内部的引用,但XCode抱怨Format指定类型'char *',但参数的类型为'NSString * __ autoreleasing **'

anotherFunction {

NSString *myString = nil;
 compute =  [self checkForError:data myString:&myString];
}


- (NSDictionary *)checkForError:(NSData *)data myString:(NSString **)myString {

    @autoreleasepool { 
            *myString = nil;
            @try {
                NSMutableString *myString1 = [[NSMutableString alloc] init];
                // do something on myString1
                  *myString = myString1;
  ------>              NSLog(@"mutableString is:%s", myString );  // Format specifies type 'char *' but the argument has type 'NSString *__autoreleasing **'
            }

    }

    return myDictionary;
}
objective-c xcode automatic-ref-counting
1个回答
1
投票

(我完全误解了这个问题)。

所以,是的 - 使用'%@'作为对象类型。将* myString传递给NSLog()以将NSString **转换为NSString *。

请注意,您应该使用NSError来封装错误,并且应该在分配之前检查您的pass by reference参数是否为NULL。

看到:

https://nshipster.com/nserror/

© www.soinside.com 2019 - 2024. All rights reserved.