Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 目标C-使用out id实现一种方法*_Objective C_Nsstring_Out - Fatal编程技术网

Objective c 目标C-使用out id实现一种方法*

Objective c 目标C-使用out id实现一种方法*,objective-c,nsstring,out,Objective C,Nsstring,Out,我目前正在开发一个目标C类ClassA,并试图实现一个类似于NSURL方法-(BOOL)getResourceValue:(out-id uu-nullable*u-nonnull)value forKey:(NSString*)key error:(out-NSError**u-nullable)error的方法,该方法使用out-id*: 我的方法是:-(BOOL)changeString:(out id*)字符串到字符串:(NSString*)新闻字符串 我希望我的方法将字符串设置为(NS

我目前正在开发一个目标C类
ClassA
,并试图实现一个类似于
NSURL
方法
-(BOOL)getResourceValue:(out-id uu-nullable*u-nonnull)value forKey:(NSString*)key error:(out-NSError**u-nullable)error
的方法,该方法使用
out-id*

我的方法是:
-(BOOL)changeString:(out id*)字符串到字符串:(NSString*)新闻字符串

我希望我的方法将
字符串
设置为(NSString*)
新闻字符串的

我希望我的方法是这样使用的:

id inputString;
[[ClassA alloc] changeString:&inputString toString:@"New String"];
inputString
现在应设置为“新字符串”(作为id*)

如何在
-(BOOL)changeString:(out id*)字符串到字符串:(NSString*)新闻字符串中执行此操作

谢谢

这很简单:

- (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);

虽然传递的参数显然是
NSString
,但为什么要使用未指定的
id
?我不相信你能传递一个out NSString*可以吗?我以为它只是id?当然可以(查看所有
NSError
参数),但您需要两个星号
(out-NSString**)字符串
。好的,谢谢,您能给我一个out-NSString的例子吗?所以我的方法有(out-NSString**)字符串并将字符串设置为newString?只是想知道,如果输入的变量有一个值,或者只是设置为null,则
out
变量是否可以读取数据?您也可以传递一个值<代码>输入字符串
只是一个指针。我更新了答案。