使用未声明的标识符self

5
我创建了一个名为数据解析的类,在这个类中,我设计了三个函数:
第一个是getData(),它需要调用parseLine()
我像下面这样调用parseLine()方法:
[self parseline];

然而,我遇到了以下错误:
Sse of undeclared identifier 'self'

在这个类中,我的函数应该如何调用彼此?
void getData(NSString *data) { 
    while(temp_top < [data length]) { 
        icc_data[++data_top] = [data characterAtIndex:temp_top]; 
        if (icc_data[data_top]==')' && icc_data[data_top -1]=='\031') { } 
        if (icc_data[0]!='\031' && icc_data[data_top]=='\n') { 
            [dataParsing parseLine]; 
        }
    }
}

你把 getData 定义为类方法了吗(函数定义前面有加号吗)? - Nathan Villaescusa
请发布一个小的代码片段。 - Dominic Cooney
#import "dataParsing.h"@implementation dataParsingvoid getData(NSString *data) { while(temp_top < [data length]) { icc_data[++data_top] = [data characterAtIndex:temp_top]; if (icc_data[data_top]==')' && icc_data[data_top -1]=='\031') { } if (icc_data[0]!='\031' && icc_data[data_top]=='\n') { [dataParsing parseLine]; } } } - LanternMike
[dataParsing parsline] 是一个实验,看看我是否能做一些不同于 self 的事情。 - LanternMike
4
请将代码片段编辑到问题中,并使用{}图标将其格式化为代码。 - Keith Thompson
显示剩余2条评论
2个回答

7

您正在将void getData(NSString *data)实现为C函数。函数不会得到对self的引用。请改用方法:

- (void)data
{
}

获取期望方法体 @implementation dataParsing-(void)getData(NSString *data) { - LanternMike

2

要使用C函数,只需正常调用即可:

getData(myData);

如果您将其实现为Objective C方法,例如:
- (void)getData:(NSString *)data
{
     //Code
}

然后您可以使用self来调用它:

[self getData:myData];

搞定了。现在它作为一个类方法在.h和.m文件中了。很有用的技巧。 - LanternMike
我会把两个答案都标记为有用,但系统只允许我标记一个。所以最佳答案获胜。 - LanternMike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接