我正在编写一个应该通过UDP控制Arduino的简单应用程序。我提出了两种观点: - 一个用于控制(ViewController.h / cpp) - 一个用于设置Arduino的主机名等。 (Settings.h / CPP)
在设置视图中是文本字段和开关。如果设置了开关,则应覆盖主机名。
主机名在ViewController.h中声明如下:
extern const char *host_name;
在ViewController.m中:
const char *host_name = "WIZnetccef3";
要在设置视图的文本字段中显示它,我正在使用viewDidLoad函数:
textfield.text = [[NSString alloc]initWithUTF8String:host_name];
对视图的更改工作正常。将显示主机名“WIZnetccef3”。
如果我改变了滑块的位置,如果开启了开关,将执行以下代码:
const char *hname = [textfield.text UTF8String];
host_name = hname;
但是当我切换视图并返回设置时,不会显示新的主机名。文本字段为空或有奇怪的字符。
这是我的问题,我不知道问题是什么。我建立了一些错误,以找出我犯了错误的地方,但这没有用。
答案 0 :(得分:1)
你重新分配CONST值...我的C不是顶级但我认为这是问题所在。 您也不会复制文本字段的值,因此它可能无法保持有效
尝试
extern char *host_name;
和
char *host_name = nil;
和
if(!host_name) {
host_name = malloc(sizeof(char) * 12);
strcpy(host_name, :@"Wzeeee...";
}
textfield.text = [[NSString alloc]initWithUTF8String:host_name];
和
free(host_name);
host_name = malloc(sizeof(char) * strlen(textField.text.UTF8String)+1);
strcpy(host_name, textField.text.UTF8String);