ARC 禁止合成具有未指定所有权或存储的财产

     2023-02-21     48

关键词:

【中文标题】ARC 禁止合成具有未指定所有权或存储的财产【英文标题】:ARC forbids synthesizing a property with unspecified ownership or storage 【发布时间】:2012-01-17 15:18:44 【问题描述】:

我创建了@propertyUIColor

@property (nonatomic) UIColor *color;

然后我尝试合成它:

@synthesize color = _color;

但我收到一个错误:

ARC 禁止合成具有未指定所有权或存储属性的 Objective-C 对象的属性

这是什么意思?

我想要做的只是为改变颜色的UIColor 对象创建一个属性。

【问题讨论】:

您可能必须给出完整的类声明和实现,因为这似乎是有效的。属性中的默认存储是强存储,除非它是您必须手动将其指定为 copy 的块。 【参考方案1】:

将您的属性声明更改为:

@property (nonatomic,strong) UIColor *color;

以便 ARC 知道它应该被保留。这将在 ARC 之前不使用 strong 进行编译,但它会很危险,因为默认值为 assign 并且颜色会被释放,除非它保留在其他地方。

我强烈推荐关于 ARC 的 WWDC2011 视频。

【讨论】:

这不是必需的,除非该属性是一个块,在这种情况下,它必须明确提及为copy。所以问题是另外一回事。 @VikramRao,这个问题已有 2.5 年历史。在被问到的时候,需要综合属性来声明存储类,默认是assign @Brian 无论如何,最好更新您接受的答案,因为人们可能会通过谷歌看到它。这些不知道的开发人员可能认为他们需要明确地编写它。至于现在这个错误主要是用块显示的,它需要是copy。默认情况下,对象为 strong,原始类型如 BOOLNSInteger 等 - assign,任何人都不太可能在对象/原始类型中看到此错误。 @Vive 实际上,您不再需要声明块 copy - 现在声明它们 strong 就可以了。如果块已经被复制到堆中,copy 的行为总是像strong 一样(两者都只是保留了块)。如果块仍然在堆栈上,copy 曾经将其复制到堆中,而 strong 过去什么都不做。 LLVM 开发人员认为这是一个错误,不管 Apple 的文档说什么,现在 strong 的行为类似于 copy 如果块在堆栈上,就像 copy 的行为类似于 strong 如果它在堆上 - IOW 它没有区别现在,只有weak 可以。 @Brian 即使在被问到的时候,你的回答仍然是错误的。的确,ARC 之前的默认值曾经是assign,但不需要存储类,就好像它是必需的一样,根本就没有默认值。默认的意思是“除非我说别的,就拿这个”。不给存储类创建了assign 属性。也许不是你想要的,但编译器并没有因此引发错误。为什么应用默认行为会出错?【参考方案2】:

您必须在属性声明中指定strongweak 存储(在nonatomic 旁边)。

【讨论】:

@WilliamSham 您不需要为所有指针执行此操作,仅对属性执行此操作。默认情况下,本地范围内的指针是强引用,但您可以使用 __weak 指示 ARC 将指针视为弱引用。 @JoePasq 不需要始终指定存储。在其他答案和问题中查看我的 cmets。

ads.ini 中的更改未反映在 arc 的连接存储库中

】ads.ini中的更改未反映在arc的连接存储库中【英文标题】:Changesinads.ininotreflectedinarc\'connectionrepository【发布时间】:2012-01-2818:04:52【问题描述】:我刚从winxp转到win764bit。在XP中,我可以更改ads.ini的内容(添加或更改连接),... 查看详情

查找具有指定名称或包含指定文本的存储过程

--needstoberuninthedatabasethatyouwanttosearchin--getallprocedureswithnamelikeSELECTDISTINCTSO.NameFROMsysobjectsSO(NOLOCK)WHERESO.Type='P'ANDSO.NameLIKE'%report%'ORDERBYSO.Name  --getallprocedurescontainingtextlikeSELECTDISTINCTSO.NameFROMsysobjectsSO(NOLOCK)INNERJOINsysco... 查看详情

尽管标记了文件 -fno-objc-arc,但 ARC 禁止在结构或联合中使用 Objective-C 对象

】尽管标记了文件-fno-objc-arc,但ARC禁止在结构或联合中使用Objective-C对象【英文标题】:ARCforbidsObjective-Cobjectsinstructsorunionsdespitemarkingthefile-fno-objc-arc【发布时间】:2011-12-2622:40:13【问题描述】:ARC禁止在结构或联合中使用Objectiv... 查看详情

c#winform向用户显示具有指定所有者的窗体

...and().Show(Owner);return; //    //摘要:    //  向用户显示具有指定所有者的窗体。    //    //参数:    // owner:    //  任何实现System.Windows.Forms.IWin32Window并表示将拥有此窗体的顶级窗口的对象。    //    //异常:   ... 查看详情

awk处理字符

...是:()在正则表达式中将字符串组合在一起。命令行:将具有字符串ae或alle或anne或allnne的所有 查看详情

设置arc有效或者无效

...   *使用clang(LLVM编译器)3.0或以上版本    *指定编译器属性为"-fobjc-arc"  查看详情

家庭财产房屋分配协议书

...中所述的房屋位于:  登记证书号为:  登记的房屋所有权人为乙方(长次女)。  第二条本协议所述房屋,经甲乙丙三方协议,该房由甲方使用、居住,其所有权归乙方享有,与丙无关;该房待甲方百年归老年后其所有权、... 查看详情

DB2 中的数据屏蔽(或生成合成数据),具有数据依赖性

】DB2中的数据屏蔽(或生成合成数据),具有数据依赖性【英文标题】:DataMasking(orgeneratingsyntheticdata)inDB2,withdatadependencies【发布时间】:2018-07-2509:48:32【问题描述】:我在工作中有这个要求,想就如何解决这个问题提出一些建... 查看详情

linux下文件的x权限有啥用

...改变为任何他想指定的权限。一个文件也许只有读权限,禁止任何修改。文件也可能只有执行权限,允许它想一个程序一样执行。三种不同的用户类型能够访问一个目录或者文件:所有着、用户组或其他用户。所有者就是创建文... 查看详情

pty是啥意思

...roprietary形容词1所有人的,业主的;所有人似的aproprietaryright所有权2有财产的3财产的;财产权的4私有的,私营的5专卖的;专利的名词(pl.proprietaries)(指个人或总称)所有人,业主1所有权;财产2专卖药 参考技术B股份有限公司ProprietaryLimitedcom... 查看详情

Angular 7:“找不到具有未指定名称属性的控件”

】Angular7:“找不到具有未指定名称属性的控件”【英文标题】:Angular7:"Cannotfindcontrolwithunspecifiednameattribute"【发布时间】:2019-07-0404:31:54【问题描述】:我正在创建我的第一个Angular应用程序,但在开发模式控制台中出现... 查看详情

如何检测 qt 标签(或任何小部件)是不是具有所需的所有空间?

...在网格布局中有一个长标签,没有任何额外的代码行,它禁止缩小窗口。在thispost我看到设置label1.setMi 查看详情

ARC 禁止发送“保留”问题的显式消息

】ARC禁止发送“保留”问题的显式消息【英文标题】:ARCforbidsexplicitmessagesendof\'retain\'issue【发布时间】:2012-08-0607:13:55【问题描述】:我正在使用Apple指南中的这个非常简单的代码:NSMutableData*receivedData;//Createtherequest.NSURLRequest*t... 查看详情

iOS 中的 ARC 问题

...行释放一个对象?或者它是未确定的,并且在未来某个未指定的时间点将被发布?同样,假设您没有对程序进行任何更改,那么每次运行和编译程序时ARC是否总是相同的?~你如何处理将一个对象交给其他类?例如,假设我们在Ba... 查看详情

存储过程(代码片段)

...说明sp_databases列出服务器上的所有数据库sp_helpdb报告有关指定数据库或所有数据库的信息sp_renamedb更爱数据库的名称sp_tables返回当前环境下可查询的对象的列表sp_columns返回某个表的列的信息sp_help查看某个表的所有信息sp_helpconstra... 查看详情

WebSocketSharp 未找到具有指定路径的 WebSocket 服务

】WebSocketSharp未找到具有指定路径的WebSocket服务【英文标题】:WebSocketSharpAWebSocketservicewiththespecifiedpathisn\'tfound【发布时间】:2016-08-1616:53:21【问题描述】:我正在尝试使用websocket-sharp创建一个简单的C#websocket服务器我按照官方指... 查看详情

如果未指定 where 子句,则 Criteria Query 获取所有相关实体

】如果未指定where子句,则CriteriaQuery获取所有相关实体【英文标题】:CriteriaQueryfetchesalltherelatedentitiesifthewhereclauseisnotspecified【发布时间】:2019-01-3010:18:27【问题描述】:我正在尝试运行一个简单的条件查询。但是,输出显示正... 查看详情

sh拟与cron一起使用。此脚本将备份指定用户在给定数据库服务器上具有访问权限的所有(或特定)数据库,(代码片段)

查看详情