gpt4 book ai didi

objective-c - 在 objective-c 中创建一个节点?

转载 作者:行者123 更新时间:2023-12-04 19:17:09 26 4
gpt4 key购买 nike

我定义了以下接口(interface):

@interface ListNode : Object
{
@private
int value;
ListNode* next;
}

- (id) value: (int) value_value; //Don't judge me, okay?
- (int) value;
- (id) next: (ListNode*) next_value;
- (ListNode*) next;
@end

以及以下实现:
@implementation ListNode

- (id) value: (int) value_value
{
value = value_value;
return self;
}

- (int) value
{
return value;
}
- (id) next: (ListNode*) next_value
{
next = next_value;
return self;
}

- (ListNode*) next
{
return next;
}

@end

然后最后在我的主要方法中,我试图这样做:
ListNode *root;
root = [ListNode new];

当我编译程序时,我没有收到任何错误,但我确实收到了一条警告:
class method '+new' not found (return defaults to 'id') [-Wobjc-method-access]
我试图运行该程序,但我得到一个段错误,我不知道它在哪里。我查阅了有关此的 wikibook,它的语法几乎与我完全相同,所以我不明白出了什么问题。

最佳答案

你的头文件有2个问题。我修复了您的代码,它适用于基础框架工作。首先,Objective-C 中没有 Object,您可以从 NSObject 继承,其次您应该使用 setter 方法为您的属性赋值:

@interface ListNode : NSObject
{
@private
int value;
ListNode* next;
}

- (id) setValue: (int) value_value;
- (int) value;
- (id) setNext: (ListNode*) next_value;
- (ListNode*) next;

@end

类实现:
#import "ListNode.h"

@implementation ListNode

- (id) setValue: (int) value_value
{
value = value_value;
return self;
}

- (int) value
{
return value;
}
- (id) setNext: (ListNode*) next_value
{
next = next_value;
return self;
}

- (ListNode*) next
{
return next;
}


@end

至于对象实例化,您使用 alloc init 并导致您有一个 setter ,您可以分配值:
//creating a root node
ListNode *root;
root = [[ListNode alloc] init];
root.value = 10;

//creating a node with no children
ListNode *child = [[ListNode alloc] init];
child.value = 20;
child.next = nil;

//assigning a child to root
root.next = child;

希望对您有所帮助,您应该查看对象初始化程序以及 getter 和 setter 以获取更多信息。
你可以看看这个问题:
Please explain Getter and Setters in Objective C

关于objective-c - 在 objective-c 中创建一个节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34079597/

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