Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.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
Objective c 目标C-我们应该使用强项、弱项还是指定项作为班级类型?_Objective C_Class - Fatal编程技术网

Objective c 目标C-我们应该使用强项、弱项还是指定项作为班级类型?

Objective c 目标C-我们应该使用强项、弱项还是指定项作为班级类型?,objective-c,class,Objective C,Class,我知道我们应该对Obj-C对象属性/IVAR使用强/弱。但我发现我可以将strong用于类类型属性/IVAR @property (nonatomic, strong) Class testClass; 该代码不会导致生成错误。为什么?我们应该使用strong还是赋值?根据 类对象不是实例,但它肯定是一个成熟的对象 创建类对象无需执行任何操作。当程序启动时,会自动为程序定义的每个类创建一个类对象 当然,您可以对对象使用strong 类对象何时发布?-简单的答案是当程序完成时 并没有理由关心在程

我知道我们应该对Obj-C对象属性/IVAR使用强/弱。但我发现我可以将strong用于类类型属性/IVAR

@property (nonatomic, strong) Class testClass;
该代码不会导致生成错误。为什么?我们应该使用strong还是赋值?

根据


类对象不是实例,但它肯定是一个成熟的对象

创建类对象无需执行任何操作。当程序启动时,会自动为程序定义的每个类创建一个类对象

当然,您可以对对象使用
strong

类对象何时发布?-简单的答案是当程序完成时

并没有理由关心在程序运行时永远不会释放的对象的保留计数。这意味着,无论您是否使用强/弱/赋值,在程序完成之前,该对象都不会被销毁


所以你可以使用你想要的任何东西,它们会给出相同的结果。

事实上,
testClass
也是一个对象,但它永远不会被释放,所以如果你使用strong/weak/assign也没关系。它们给出了相同的结果。一个类对象从未实际释放;类对象上没有清理或任何其他类型的“生命周期结束”触发器。当一个程序完成时发生的收获是程序本身外部的。在某些(许多)情况下,当用户或操作系统终止应用程序时,甚至不会调用at exit挂钩。我个人认为这个答案是错误的建议。它依赖于实现细节。我会像你对待任何其他人一样对待这个财产。使用
strong
表示您希望在需要时安全地保留该值。使用
weak
指示如果该值消失(即使在这种特殊情况下实际上不能消失),该值也可以。根据属性的使用方式声明属性,而不是基于属性数据类型背后可能的实现细节。“类对象不是实例”每个对象都是某个对象的实例。类对象是元类的实例。