Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.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 属性属性_Ios_Properties_Attributes_Subclass - Fatal编程技术网

Ios 属性属性

Ios 属性属性,ios,properties,attributes,subclass,Ios,Properties,Attributes,Subclass,当子类化时,我倾向于给我的所有属性赋予属性(非原子,强),除了IBOutlet,当不是nib中的顶级对象时,它们是(非原子,弱) 是否存在这样一种习惯可能不安全的情况,并产生保留循环或其他此类负面影响 谢谢。对于您应该使用的nsstring(非原子,复制)。是的,这个习惯可能不安全,因为您似乎没有真正遵守属性赋予的规则 正确的方法是考虑如何使用该属性,并为其提供相应的属性 在某些情况下,这可能会出错: 代表:保留循环 内存管理:在两个类之间共享的映像不能再使用,您必须在这两个类上都将其置零 线

当子类化时,我倾向于给我的所有属性赋予属性(非原子,强),除了IBOutlet,当不是nib中的顶级对象时,它们是(非原子,弱)

是否存在这样一种习惯可能不安全的情况,并产生保留循环或其他此类负面影响


谢谢。

对于您应该使用的nsstring(非原子,复制)。

是的,这个习惯可能不安全,因为您似乎没有真正遵守属性赋予的规则

正确的方法是考虑如何使用该属性,并为其提供相应的属性

在某些情况下,这可能会出错:

  • 代表:保留循环
  • 内存管理:在两个类之间共享的映像不能再使用,您必须在这两个类上都将其置零
  • 线程:将由多个线程访问的属性
为您提供一个非常快速的指南:

如果属性主要属于类,即使类可能共享它:strong 该类需要属性才能工作:strong(但当不再需要指针时,不要忘记将其置零) 如果此属性属于另一个类:弱 代表:弱 出口:弱

对于并发属性,您通常可以使用非原子属性,除非您知道该属性可能被多个线程使用,然后将其设置为原子属性


这只是一个非常模糊的指南,但在ARC下对我非常有效。

对此可能没有答案-我想不出任何东西。当然,如果你有代表,他们也应该很弱。让ARC做所有的重担:-)谢谢你,这让人放心。你会知道为什么吗?好建议!问题是这样的-如果字符串是可变的,那么字符串实际上是被复制的-您会得到另一个字符串。但是如果字符串是不可变的(即普通字符串),那么它只是被保留。我要向上射一箭!很好的提醒我们大家(我自己忘记了做这件事,即使我已经知道了很多年了)。感谢@davidhdhired Vibhor的解释,如果你喜欢这个,那么也给hkcktk一个提示(即点击向上箭头)。我知道你在这里是相当新的,但是帮助你的人需要获得积分:-)