Objective C class 方法错误“使用未声明的标识符”
Objective C class method error ''Use of undeclared identifier"
希望这不是一个荒谬的问题,因为我是一个自学成才的程序员,但我发现一些代码看起来可能会帮助我做我想做的事情。基本上我想在我的一个应用程序中增强 NSLog() 函数,并希望以与 NSLog() 相同的方式调用我的方法。很难google 'void function()' 因为似乎没有什么是相关的,我习惯了这样构造的方法:
-(void)RLog(NSString*)statement;
但样本建议使用:
void RLog(NSString *statement,...);
这似乎可行,让我用 'RLog(@"My message")' 调用它,但是以这种方式使用它时,该方法会忽略 class 变量,而且我似乎无法使用 'self'要么...
Logging.h
#import <UIKit/UIKit.h>
@import Foundation.NSString;
@interface Logging : NSObject
@property (nonatomic) BOOL enabled;
void RLog(NSString *statement,...);
@end
Logging.m
#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
希望我已经包含了足够的信息来解释我的问题,并且没有删除太多以至于难以理解!
提前致谢。
等离子
void RLog(NSString *format,...)
... 不是 Objective-C 方法 ;它只是一个 C 函数.
C 函数是全局的和独立的。这里没有 self
,与 Logging 的 enabled
也没有关系。就此功能而言,Logging class 可能根本不存在。
经过更多调查后,我使用信息 here 找到了解决此问题的方法。
我添加了一个名为 thisClass 的 class 变量,然后在我的 class 初始阶段将 'self' 分配给它。
@implementation Logging
id thisClass;
- (id) init
{
if (self = [super init])
{
thisClass = self;
}
return self;
}
我现在可以从 C 函数内部调用日志记录中的方法 class 使用:
[thisClass log:@"Testing"];
无需将“self”作为参数发送,我已将需要局部变量的其余代码移至我的 'log' 方法中,只需使用 C 方法调用它即可一种简化的方法。
等离子
希望这不是一个荒谬的问题,因为我是一个自学成才的程序员,但我发现一些代码看起来可能会帮助我做我想做的事情。基本上我想在我的一个应用程序中增强 NSLog() 函数,并希望以与 NSLog() 相同的方式调用我的方法。很难google 'void function()' 因为似乎没有什么是相关的,我习惯了这样构造的方法:
-(void)RLog(NSString*)statement;
但样本建议使用:
void RLog(NSString *statement,...);
这似乎可行,让我用 'RLog(@"My message")' 调用它,但是以这种方式使用它时,该方法会忽略 class 变量,而且我似乎无法使用 'self'要么...
Logging.h
#import <UIKit/UIKit.h>
@import Foundation.NSString;
@interface Logging : NSObject
@property (nonatomic) BOOL enabled;
void RLog(NSString *statement,...);
@end
Logging.m
#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
希望我已经包含了足够的信息来解释我的问题,并且没有删除太多以至于难以理解!
提前致谢。
等离子
void RLog(NSString *format,...)
... 不是 Objective-C 方法 ;它只是一个 C 函数.
C 函数是全局的和独立的。这里没有 self
,与 Logging 的 enabled
也没有关系。就此功能而言,Logging class 可能根本不存在。
经过更多调查后,我使用信息 here 找到了解决此问题的方法。
我添加了一个名为 thisClass 的 class 变量,然后在我的 class 初始阶段将 'self' 分配给它。
@implementation Logging
id thisClass;
- (id) init
{
if (self = [super init])
{
thisClass = self;
}
return self;
}
我现在可以从 C 函数内部调用日志记录中的方法 class 使用:
[thisClass log:@"Testing"];
无需将“self”作为参数发送,我已将需要局部变量的其余代码移至我的 'log' 方法中,只需使用 C 方法调用它即可一种简化的方法。
等离子