在类方法错误中访问的实例变量'variable'

Aho*_*tbi 17 objective-c

我在头文件中声明了一个变量:

@接口

int _nPerfectSlides;
Run Code Online (Sandbox Code Playgroud)

@property (nonatomic, readwrite) int _nPerfectSlides;
Run Code Online (Sandbox Code Playgroud)

我有一个我在标题中声明的方法:

+ (void) hit;
Run Code Online (Sandbox Code Playgroud)

该方法包含以下代码:

+ (void) hit {
    NSLog(@"hit");
    _nPerfectSlides = 0;
    [_game showHit];
}
Run Code Online (Sandbox Code Playgroud)

现在由于某种原因我得到错误"实例变量'_nPerfectSlides'在类方法中访问"错误,似乎我无法访问方法内的任何变量.我究竟做错了什么?

Raj*_*han 21

1.对于 + (void)hit:只能访问该self对象.

- 步骤1:从头文件中删除以下行

@property (nonatomic, readwrite) int _nPerfectSlides;
Run Code Online (Sandbox Code Playgroud)

- 第2步:

  • int _nPerfectSlides全局添加您的类文件..
  • 这意味着之前宣布 @implementation

例如:在 .m File

#import "Controller.h"
int _nPerfectSlides // Add like this before @implementation

@implementation Controller
Run Code Online (Sandbox Code Playgroud)

2.对于 - (void)hit:只能访问实例方法


勿绮语*_*勿绮语 20

如果您打算将其设为实例方法,请将该更改为 - .

  • 你似乎没有掌握OOP的核心概念.你有同化这样的文档吗?http://www.otierney.net/objective-c.html (6认同)
  • 创建类的实例并在该实例上调用实例方法... (5认同)

Cyr*_*lle 7

正如其名称所示,实例变量只能在实例方法(使用声明的方法-)中访问.类方法(声明为+)无法访问实例变量,只能访问self对象.

  • 我不明白你的评论.你可以将`+(void)hit`改为` - (void)hit`,或者在你的类'@interface`之外的全局级别声明`_nPerfectSlides`. (3认同)