gpt4 book ai didi

ios - 如何在 init 中初始化 Objective C 类变量?

转载 作者:行者123 更新时间:2023-11-28 18:28:54 30 4
gpt4 key购买 nike

@interface中,我有这样的声明:

@interface myClass {
NSDictionary * myData;
}

@property (nonatomic, assign) NSDictionary * data;
+ (id) initWithData:(NSDictionary *)data;

@end

@implementation中,我有这段代码:

@implementation

@synthesize data;

+ (id) initWithData:(NSDictionary *)freshData {
self = [super init];
if (self) {
self->data = freshData;
}
return self;
}

@end

但我在 self->data 上遇到错误 Incomplete definition of type 'struct objc_class

如果我把它改成self.data,我得到错误Member reference type 'struct objc_class *' is a pointer;您是要使用“->”吗?

如果我删除 self,我会收到错误“在类方法中访问实例变量‘数据’。”

但是如果我将方法类型从+(类方法)更改为-(实例方法),我将无法访问init。

而且我也无法通过将分配从 data 更改为 myData 来修复此错误。

我应该如何构造一个构造函数?

我从中学到(但没有帮助)的链接是:

最佳答案

你也可以这样做

+ (id) initWithData:(NSDictionary *)freshData {
return [[self alloc]initWithData:freshData];
}
- (instancetype) initWithData:(NSDictionary *)freshData {

NSParameterAssert(freshData != nil);

self = [super init];

if (self) {
self.data = freshData;
}

return self;
}

关于ios - 如何在 init 中初始化 Objective C 类变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40796557/

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