objective-c – 使用点语法的编译器错误“需要setter方法” – 定义了setter

objective-c – 使用点语法的编译器错误“需要setter方法” – 定义了setter,第1张

概述我无法弄清楚为什么我的getter和setter代码不起作用.在一些示例代码中,我正在讨论: - (NSArray *)sushiTypes { return _sushiRolls;}- (void)setSushiTypes:(NSArray *)sushiRolls { [sushiRolls retain]; [_sushiRolls release]; _sushi 我无法弄清楚为什么我的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];}

整个过程都有效,但是寿司类型的属性从未被声明过.我(有点)了解它是如何工作的,因为它与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

解决方法 在setter方法名称中大写属性的第一个字母是标准的.正如你所拥有的:

-(voID)setSushiTypes:(NSArray *)sushiRolls

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

-(voID)setX1:(NSNumber *)x1;
总结

以上是内存溢出为你收集整理的objective-c – 使用点语法的编译器错误“需要setter方法” – 定义了setter全部内容,希望文章能够帮你解决objective-c – 使用点语法的编译器错误“需要setter方法” – 定义了setter所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1001207.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存