希望这不是一个荒谬的问题,因为我是一个自学成才的程序员,但我发现了一些看起来可以帮助我做我想做的事情的代码。基本上我想在我的一个应用程序中增强 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] 删除。
我来说两句