Ron*_*nto 7 cocoa objective-c automatic-ref-counting
我是ARC的新手,我有一个对象,它有一些内部类作为成员.在init方法中,我想为它们分配新对象.
ClassA.h
#import "ClassB.h"
@interface ClassA : NSObject
@property (assign) ClassB *member;
@end
Run Code Online (Sandbox Code Playgroud)
ClassB.h
@interface ClassB : NSObject
@property (assign) NSString *name;
@end
Run Code Online (Sandbox Code Playgroud)
ClassA.m
@synthesize member = _member;
-(id)init
{
_member = [[ClassB alloc] init];
}
Run Code Online (Sandbox Code Playgroud)
但我得到"将保留对象分配给不安全的属性"错误.我搜索了内部网,并没有看到有关此特定警告的其他信息.它编译,但获得运行时错误的访问异常.
Cal*_*leb 12
当前的问题是您将对象分配给标记的成员weak,这意味着该对象将没有强引用并将立即释放.使用strong或retain代替weak或assign将修复它.
您的-init方法的一个更大的问题是它不会调用[super init],并且它不会返回任何内容.至少,你-init应该看起来像这样:
-(id)init
{
self = [super init];
if (self != nil) {
self.member = [[ClassB alloc] init];
}
return self;
}
Run Code Online (Sandbox Code Playgroud)