objective-c – 为什么我不能分配/ init – 获取“将保留对象分
发布时间:2020-12-16 04:56:21 所属栏目:百科 来源:网络整理
导读:我是ARC的新手,我有一个对象,它有一些内部类作为成员.在init方法上,我想为它们分配新对象. ClassA.h #import "ClassB.h"@interface ClassA : NSObject@property (assign) ClassB *member;@end ClassB.h @interface ClassB : NSObject@property (assign) NSSt
我是ARC的新手,我有一个对象,它有一些内部类作为成员.在init方法上,我想为它们分配新对象.
ClassA.h #import "ClassB.h" @interface ClassA : NSObject @property (assign) ClassB *member; @end ClassB.h @interface ClassB : NSObject @property (assign) NSString *name; @end ClassA.m @synthesize member = _member; -(id)init { _member = [[ClassB alloc] init]; } 但我得到“将保留对象分配给不安全的属性”错误.我搜索了内部网,没有看到有关此特定警告的其他信息.它编译,但获得运行时错误的访问异常. 解决方法
当前的问题是您将对象分配给标记为弱的成员,这意味着该对象将没有强引用并将立即释放.使用强或保留而不是弱或分配将解决这个问题.
你的-init方法的一个更大的问题是它不会调用[super init],并且它不会返回任何内容.至少,你的-init应该是这样的: -(id)init { self = [super init]; if (self != nil) { self.member = [[ClassB alloc] init]; } return self; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |