objective-c – 为什么我不能分配/ init – 获取“将保留对象分配给不安全的属性”警告?

前端之家收集整理的这篇文章主要介绍了objective-c – 为什么我不能分配/ init – 获取“将保留对象分配给不安全的属性”警告?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是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;
}

猜你在找的C&C++相关文章