Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.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 Alloc/init';正在删除只读属性_Ios_Objective C - Fatal编程技术网

Ios Alloc/init';正在删除只读属性

Ios Alloc/init';正在删除只读属性,ios,objective-c,Ios,Objective C,我已在.h类中声明 @property (nonatomic, readonly) SomeClass *sup; 在.m类的init中,我可以说 _sup = [[SomeClass alloc] init]; 但不是 self.sup = [[SomeClass alloc] init]; 这是因为它是只读的。区别是什么?当您使用\u sup时,您直接访问该属性后面的变量。当您说self.sup时,您是通过setter方法访问它的,您不能这样做,因为它是只读的。阅读有关属性的更多信息。

我已在.h类中声明

@property (nonatomic, readonly) SomeClass *sup;
在.m类的init中,我可以说

_sup = [[SomeClass alloc] init];
但不是

self.sup = [[SomeClass alloc] init];

这是因为它是只读的。区别是什么?

当您使用
\u sup
时,您直接访问该属性后面的变量。当您说
self.sup
时,您是通过setter方法访问它的,您不能这样做,因为它是
只读的
。阅读有关属性的更多信息。

当您使用
\u sup
时,您将直接访问该属性后面的变量。当您说
self.sup
时,您是通过setter方法访问它的,您不能这样做,因为它是
只读的
。阅读有关属性的更多信息。

当您使用
\u sup
时,您将直接访问该属性后面的变量。当您说
self.sup
时,您是通过setter方法访问它的,您不能这样做,因为它是
只读的
。阅读有关属性的更多信息。

当您使用
\u sup
时,您将直接访问该属性后面的变量。当您说
self.sup
时,您是通过setter方法访问它的,您不能这样做,因为它是
只读的
。阅读有关属性的详细信息。

只读表示未创建setter方法。因此,一旦您通过self.sup访问它,就意味着您正在调用一个未创建的方法


_sup仅为变量访问。

只读表示未创建setter方法。因此,一旦您通过self.sup访问它,就意味着您正在调用一个未创建的方法


_sup仅为变量访问。

只读表示未创建setter方法。因此,一旦您通过self.sup访问它,就意味着您正在调用一个未创建的方法


_sup仅为变量访问。

只读表示未创建setter方法。因此,一旦您通过self.sup访问它,就意味着您正在调用一个未创建的方法


_sup只是一个可变访问。

以及其他许多访问:,,这并不是简单地因为
sup
的公共接口是
readonly
(因为您可以/将在私有类扩展中定义一个私有的非只读接口,从而允许您在保持对象只读用于外部目的的同时私下使用setter)实际上,使用
\u sup
的原因与其说是因为缺少setter,不如说是因为不鼓励在
init
方法中使用accessor方法。即使
sup
最初定义为非
readonly
,您仍然不会在init中使用
self.sup=…
。参见第页高级内存管理编程指南的实用内存管理部分。本着Josh试图列举现有重复问题的精神,我可能会指示您使用或。与其他许多问题一起使用:,,,这并不仅仅是因为
sup
的公共接口是
readonly
(因为您可以/将在私有类扩展中定义一个私有的非只读接口,从而允许您在保持对象只读用于外部目的的同时私下使用setter)实际上,使用
\u sup
的原因与其说是因为缺少setter,不如说是因为不鼓励在
init
方法中使用accessor方法。即使
sup
最初定义为非
readonly
,您仍然不会在init中使用
self.sup=…
。参见第页高级内存管理编程指南的实用内存管理部分。本着Josh试图列举现有重复问题的精神,我可能会指示您使用或。与其他许多问题一起使用:,,,这并不仅仅是因为
sup
的公共接口是
readonly
(因为您可以/将在私有类扩展中定义一个私有的非只读接口,从而允许您在保持对象只读用于外部目的的同时私下使用setter)实际上,使用
\u sup
的原因与其说是因为缺少setter,不如说是因为不鼓励在
init
方法中使用accessor方法。即使
sup
最初定义为非
readonly
,您仍然不会在init中使用
self.sup=…
。参见第页高级内存管理编程指南的实用内存管理部分。本着Josh试图列举现有重复问题的精神,我可能会指示您使用或。与其他许多问题一起使用:,,,这并不仅仅是因为
sup
的公共接口是
readonly
(因为您可以/将在私有类扩展中定义一个私有的非只读接口,从而允许您在保持对象只读用于外部目的的同时私下使用setter)实际上,使用
\u sup
的原因与其说是因为缺少setter,不如说是因为不鼓励在
init
方法中使用accessor方法。即使
sup
最初定义为非
readonly
,您仍然不会在init中使用
self.sup=…
。参见第页高级内存管理编程指南的“实用内存管理”部分。本着Josh试图列举现有重复问题的精神,我可能会指导您使用或。