Objective C 类方法错误“使用未声明的标识符”

等离子体

希望这不是一个荒谬的问题,因为我是一个自学成才的程序员,但我发现了一些看起来可以帮助我做我想做的事情的代码。基本上我想在我的一个应用程序中增强 NSLog() 函数,并希望以与 NSLog() 相同的方式调用我的方法。谷歌“void function()”非常困难,因为似乎没有任何相关性,我已经习惯了这样构造的方法:

-(void)RLog(NSString*)statement;

但样本建议使用:

void RLog(NSString *statement,...);

这似乎有效,让我用'RLog(@"My message")'调用它,但是以这种方式使用它的方法会忽略类变量,而且似乎我也不能使用'self'......

日志文件

#import <UIKit/UIKit.h>
@import Foundation.NSString;

@interface Logging : NSObject

@property (nonatomic) BOOL enabled;

void RLog(NSString *statement,...);

@end

日志文件

#import "Logging.h"

@implementation Logging

@synthesize enabled;

void RLog(NSString *format,...) {

     /* something that uses 'enabled' throws 'Use of undeclared identifier enabled' */

     /* something else that uses '[[self class] session]' throws 'Use of undeclared identifier self' */

}

@end

希望我已经包含了足够的信息来解释我的问题,而不是删除太多以使其难以理解!

提前致谢。

等离子体

等离子体

经过更多调查后,我找到了使用此处的信息解决此问题的方法

我添加了一个名为 thisClass 的类变量,然后在我的类初始化阶段为其分配了“self”。

@implementation Logging
    
id  thisClass;

- (id) init
{
    if (self = [super init])
    {
        thisClass = self;
    }
    return self;
}

从 C 函数内部,我现在可以使用以下方法调用我的 Logging 类中的方法:

[thisClass log:@"Testing"];

不必将“self”作为参数发送进来,我已经将需要局部变量的其余代码移到我的“log”方法中,并简单地使用 C 方法以简化的方式调用它。

等离子体

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Objective c中使用Swift类。发生未声明的标识符错误

Objective-C:使用未声明的标识符

错误:使用未声明的标识符“self”c++-objective c混合

iOS:Objective-C 创建类属性错误:使用未声明的标识符

Objective-c:未声明的标识符 applicationDidEnterBackground

CGImageDestinationRef的Objective-C未声明标识符

Objective-C-使用未声明的标识符(定义后)

将Swift导入到Objective-C中-“使用未声明的标识符”

使用简单宏C ++的未声明的标识符错误

在Visual Studio中使用C ++类-未声明的标识符错误

带有struct'未声明标识符的C ++类

错误C2065:“框架”:未声明的标识符

C++ 未声明的标识符错误

错误C2065:“名字”:未声明的标识符

Xcode C ++未声明的标识符错误

C ++数组未声明的标识符错误

C ++错误:预期的不合格ID和使用未声明的标识符错误?

对类中的私有变量使用未声明的标识符 (C++)

在头文件(C)中使用未声明的标识符

未声明的标识符 / C++

未声明的标识符C ++

使用函数返回指向函数的指针时出现未声明的标识符错误(Visual Studio上为C ++)

错误:C2065:“ GL_GEOMETRY_SHADER”:未声明的标识符

错误C2065:模板功能中未声明的标识符

托管代码中未声明的标识符错误... Visual C#

未声明 Visual c++ 标识符

C2065 's' 未声明的标识符

在目标c中获取未声明的标识符

未声明的标识符 C2065 "P"