gpt4 book ai didi

objective-c - 使用点语法的编译器错误 "setter method needed"-- setter 已定义

转载 作者:搜寻专家 更新时间:2023-10-30 19:42:09 26 4
gpt4 key购买 nike

我不明白为什么我的 getter 和 setter 代码不起作用。在一些示例代码中,我正在查看:

- (NSArray *)sushiTypes {
return _sushiRolls;
}

- (void)setSushiTypes:(NSArray *)sushiRolls {
[sushiRolls retain];
[_sushiRolls release];
_sushiRolls = sushiRolls;
}

然后在:

- (void)viewDidLoad {
[super viewDidLoad];
self.sushiTypes = [[NSArray alloc]initWithObjects:@"...]autorelease];
}

一直以来,这都是有效的,但是从未声明过 sushiTypes 的属性。我(有点)明白它是如何工作的,因为无论它是否被合成,它的工作方式都与 setter/getter 相同。

但是这是我的代码,我遇到了一个要求属性的编译器错误。我错过了什么吗?

#import <Foundation/Foundation.h>

@interface Temp0 : NSObject {
NSNumber *x1;
}

-(NSNumber *)x1;
-(void)setx1:(NSNumber *)x;

@end

//
#import "Temp0.h"

@implementation Temp0

-(NSNumber *)x1 {
return x1;
}

-(void)setx1:(NSNumber *)x {
[x retain];
[x1 release];
x1 = x;
}

-(id)init
{
self.x1 = [[NSNumber alloc]initWithInt:1]; // Error on this line:
// Setter method is needed to assign to object using property assignment syntax
[super init];
}

@end

Screenshot of this code and the error in Xcode

最佳答案

设置方法名称中属性的首字母大写是标准做法。正如您正确地拥有:

-(void)setSushiTypes:(NSArray *)sushiRolls

所以 setX1: 是预期的方法签名。

-(void)setX1:(NSNumber *)x1;

关于objective-c - 使用点语法的编译器错误 "setter method needed"-- setter 已定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9288592/

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