gpt4 book ai didi

iphone - 将 NSString 变量传递给函数并修改它

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:00 24 4
gpt4 key购买 nike

我是 objective-c 的新手,这是我的第一篇文章。这是我的问题:

在我的主文件中有一个变量:NSString *var;然后我有一个功能:

-(BOOL) myfunction:(NSString *)myvar {
myvar = @"OK!";
return YES;
}

现在在我的主文件中:

NSString *var;
BOOL control = myfunction:var;
if(control)
NSLog(@"var is: %@",var);

但输出是“var is:”。如果我在 Debug模式下构建,并在函数 myfunction 的开头放置一个断点,则 myvar 的内存地址等于 to var,但是之后myvar 的地址分配与 var 的地址不同。我该如何解决?提前致谢!

最佳答案

虽然到目前为止给出的答案是正确的。我认为一个更相关的问题是您为什么要这样做。

看起来您想要一种防御性编程风格,其中返回代码指示成功或失败。

一种更像 Objective-C 的方法是将字符串和 NSError ** 作为参数传递并返回字符串或 nil 以指示失败,如 Error Handling Programming Guide

所以写这个的方式是:

- (NSString *)aStringWithError:(NSError **)outError {
returnString = @"OK";
if (!returnString) {
if (outError != NULL) {
NSString *myErrorDomain = @"com.company.app.errors";
NSInteger errNo = 1;
*outError = [[[NSError alloc] initWithDomain:myErrorDomain code:errNo userInfo:nil] autorelease];
}
}
return returnString;
}

并使用它:

NSError *error;
NSString *stringVariable = [self aStringWithError:&error];
if (!stringVariable) {
// The function failed, so it returned nil and the error details are in the error variable
NSLog(@"Call failed with error: %ld", [error code]);
}

这是一个简单的示例,但您可以看到您可以构造并返回关于错误的更有意义的信息,而不仅仅是它是否成功。

关于iphone - 将 NSString 变量传递给函数并修改它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4934659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com