Objective C - 使用 out id 实现一个方法*

Objective C - Implement a method using an out id*

我目前正在开发 Objective C class ClassA 并且我正在尝试实现一种类似于 NSURL 方法 - (BOOL)getResourceValue:(out id __nullable * __nonnull)value forKey:(NSString *)key error:(out NSError ** __nullable)error 的方法,该方法使用 out id *:

我的方法是:- (BOOL)changeString:(out id *)theString toString:(NSString *)newString

我希望我的方法将 theString 设置为 (NSString*) newString's value

我的方法是这样使用的:

id inputString;
[[ClassA alloc] changeString:&inputString toString:@"New String"];

inputString 现在应该设置为 "New String"(如 id *)

如何在 - (BOOL)changeString:(out id *)theString toString:(NSString *)newString 中执行此操作?

谢谢

这很简单:

- (BOOL)changeString:(NSString * _Nonnull *)theString 
            toString:(NSString *)newString  {
    *theString = newString;
    return YES;
}

并使用它:

NSString *inputString;
BOOL result = [self changeString:&inputString toString:@"Hello World"];
NSLog(@"%d - %@", result, inputString);

inputString不需要是nil,你甚至可以传一个值

- (BOOL)changeString:(NSString * _Nonnull *)theString 
            toString:(NSString *)newString  {

    *theString = [NSString stringWithFormat: @"%@ %@", *theString, newString];
    return YES;
}

NSString *inputString = @"Hello";
BOOL result = [self changeString:&inputString toString:@"World"];
NSLog(@"%d - %@", result, inputString);