关键词:
【中文标题】ARC 禁止合成具有未指定所有权或存储的财产【英文标题】:ARC forbids synthesizing a property with unspecified ownership or storage 【发布时间】:2012-01-17 15:18:44 【问题描述】:我创建了@property
的UIColor
,
@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
,原始类型如 BOOL
、NSInteger
等 - assign
,任何人都不太可能在对象/原始类型中看到此错误。
@Vive 实际上,您不再需要声明块 copy
- 现在声明它们 strong
就可以了。如果块已经被复制到堆中,copy
的行为总是像strong
一样(两者都只是保留了块)。如果块仍然在堆栈上,copy
曾经将其复制到堆中,而 strong
过去什么都不做。 LLVM 开发人员认为这是一个错误,不管 Apple 的文档说什么,现在 strong
的行为类似于 copy
如果块在堆栈上,就像 copy
的行为类似于 strong
如果它在堆上 - IOW 它没有区别现在,只有weak
可以。
@Brian 即使在被问到的时候,你的回答仍然是错误的。的确,ARC 之前的默认值曾经是assign
,但不需要存储类,就好像它是必需的一样,根本就没有默认值。默认的意思是“除非我说别的,就拿这个”。不给存储类创建了assign
属性。也许不是你想要的,但编译器并没有因此引发错误。为什么应用默认行为会出错?【参考方案2】:
您必须在属性声明中指定strong
或weak
存储(在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【问题描述】:我正在尝试运行一个简单的条件查询。但是,输出显示正... 查看详情