gpt4 book ai didi

objective-c - 为什么我不能分配/初始化 - 得到 "Assigning retained object to unsafe property"警告?

转载 作者:太空狗 更新时间:2023-10-30 03:36:17 24 4
gpt4 key购买 nike

我是 ARC 的新手,我有一个对象,它有一些内部类作为成员。在 init 方法上,我想为它们分配新对象。

A类.h

#import "ClassB.h"
@interface ClassA : NSObject
@property (assign) ClassB *member;
@end

B类.h

@interface ClassB : NSObject
@property (assign) NSString *name;
@end

A类.m

@synthesize member = _member;
-(id)init
{
_member = [[ClassB alloc] init];
}

但我收到“将保留的对象分配给不安全的属性”错误。我在互联网上搜索,没有看到关于这个特定警告的其他信息。它可以编译,但会出现运行时错误访问异常。

最佳答案

直接的问题是您将对象分配给标记为 weak 的成员,这意味着该对象将没有强引用并将立即被释放。使用 strongretain 而不是 weakassign 将解决这个问题。

-init 方法的一个更大问题是它不调用 [super init],并且不返回任何内容。至少,您的 -init 应该如下所示:

-(id)init
{
self = [super init];
if (self != nil) {
self.member = [[ClassB alloc] init];
}
return self;
}

关于objective-c - 为什么我不能分配/初始化 - 得到 "Assigning retained object to unsafe property"警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8269811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com