Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.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
Ios 无法传递接口类型为';NSString';按值转换为变量函数;格式字符串的预期类型为';id';_Ios_Objective C_Nsstring - Fatal编程技术网

Ios 无法传递接口类型为';NSString';按值转换为变量函数;格式字符串的预期类型为';id';

Ios 无法传递接口类型为';NSString';按值转换为变量函数;格式字符串的预期类型为';id';,ios,objective-c,nsstring,Ios,Objective C,Nsstring,我用X代码写了下面的代码 NSString *myString = @"testString"; NSLog(@"*myString = %@", *myString); 我得到了以下错误 无法通过值将接口类型为“NSString”的对象传递给变量函数;格式字符串的预期类型为“id” 有人能告诉我这是什么意思吗?“*myString”代表什么? 我们知道,如果我们像下面这样编写代码,就不会有错误 char testchar = 'f'; char *char1 = &testchar

我用X代码写了下面的代码

NSString  *myString = @"testString";
NSLog(@"*myString = %@", *myString);
我得到了以下错误

无法通过值将接口类型为“NSString”的对象传递给变量函数;格式字符串的预期类型为“id”

有人能告诉我这是什么意思吗?“*myString”代表什么? 我们知道,如果我们像下面这样编写代码,就不会有错误

char testchar = 'f';
char *char1 = &testchar;
NSLog(@"*char1 = %c",*char1);
为什么NSString不能像这样写

@阿维,谢谢你的解释,本来我想问的是我看到了下面的声明和定义:

NSString const *BNRNextItemValuePrefsKey1 = @"NextItemValue";
根据我的理解,bnNextItemValuePrefskey1是指向常量@“NextItemValue”的指针 但是当我做下面的操作时,没有错误, BNRNextItemValuePrefsKey1=@“jijijij”;
为什么会发生这种情况,您能解释一下吗?

语法
*myString
正在解除对指针的引用
myString
。它告诉编译器传递指针指向的内存位置包含的值,而不是传递指针本身的值。该示例给出错误的原因是Objective-C不允许按值传递对象。只允许向对象传递指针。错误消息中对
id
的引用指出
%@
格式字符串用于打印对象。任何对象的打印内容取决于该对象类型的
-description
实现

第二个示例使用指向
char
的指针,因为Objective-C在传递
char
的值时没有问题

问题编辑


在该语句中,
const
属性指的是指向的值,而不是指针的值。就实现而言,这并不意味着什么,因为该字符串无论如何都是不可更改的。我相信它允许编译器优化。

去掉
NSLog
行上的
*
。我知道,但我想知道“*myString”是什么意思。如果你知道要去掉
*
,那么为什么你会在错误使用
*
时发布一个关于错误的问题?请参阅问题中我的更新,我感到困惑。