Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.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 当Null设置为NSString时会发生什么情况??_Ios_Objective C_Memory Management - Fatal编程技术网

Ios 当Null设置为NSString时会发生什么情况??

Ios 当Null设置为NSString时会发生什么情况??,ios,objective-c,memory-management,Ios,Objective C,Memory Management,当Null设置为NSString时会发生什么情况?并保存在NSUserDefaults??它会崩溃吗?因为它将它视为一个被释放的实例???你在混淆视听。首先,在保存对象类型之前,在检索时(NSStringFromClass[obj class])四处散布一些报告对象类型的NSLog消息。您没有明确说明是使用基于C的SQLite接口还是使用具有SQLite备份存储的核心数据,所以请更新您的问题 最后,如果您用只有类B响应的消息向类A的对象发送消息,您将得到指出该错误的异常。解除分配的错误是完全不同

Null
设置为
NSString
时会发生什么情况?并保存在
NSUserDefaults
??它会崩溃吗?因为它将它视为一个被释放的实例???

你在混淆视听。首先,在保存对象类型之前,在检索时(NSStringFromClass[obj class])四处散布一些报告对象类型的NSLog消息。您没有明确说明是使用基于C的SQLite接口还是使用具有SQLite备份存储的核心数据,所以请更新您的问题


最后,如果您用只有类B响应的消息向类A的对象发送消息,您将得到指出该错误的异常。解除分配的错误是完全不同的,它表明内存管理有问题。要跟踪后一个错误,请启用Zombies并中断发送给one的任何消息(这里有许多关于如何执行此操作的问答)。

现在,如果您想说的是“当您将NSString指针设置为Null时会发生什么情况”,这取决于“Null”(这不是标准的Objective-C术语)的含义

“Null”可以表示“nil”(C别名为“Null”和“Null”),也可以表示NSNull对象

“nil”是一个“空指针”——全部为零。这意味着指针不引用任何对象。“NSNull”是一个对象类,其唯一(“singleton”)实例用于表示“nothing”,即使有一个真实的对象表示这一点

您可以很容易地将NSString指针(即声明的
NSString*
)设置为nil。(注意,“nil”周围没有引号!)这会使指针为“空”

您还可以通过强制转换将NSString指针设置为指向NSNull对象,尽管这通常不会实现

(当然,您可以将NSString指针设置为“空字符串”-@“。这是一个长度为零的实际字符串,与nil/null没有实际关系。)


由于“局部”变量(在方法中声明的变量)在输入方法时不会被编译器隐式归零,因此在方法输入时将声明的指针显式设置为nil通常是一种好的做法,这样,如果它们最终没有被设置(但确实被引用),它们就不会包含“垃圾”那会产生神秘的错误。

你试过吗?你是说
NULL
还是
[NSNull NULL]
;是的,我有一个sqlite db,我从中获取数据,打印出来时返回Null,然后从userdefault获取后显示-[CFString respondsToSelector:]:发送到deallocated Instance的消息打印时显示给我(Null)我不知道sqlite数据库返回的确切内容您不能这样做。说“将Null设置为NSString”是没有意义的。