希望不是一个可笑的问题,因为我是一个自学的程序员,但我找到了一些代码,看起来它可能会帮助我做一些我想做的事情。基本上,我希望在我的应用程序中增强NSLog()函数,并希望以与NSLog()相同的方式调用我的方法。google 'void ()‘非常困难,因为没有什么是相关的,我习惯于这样构造的方法:
-(void)RLog(NSString*)statement;但样本建议使用:
void RLog(NSString *statement,...);这似乎有效,让我用‘RLog(@“我的消息”)来调用它,但是使用它时,这个方法忽略了类变量,而且我似乎也不能使用'self’.
Logging.h
#import <UIKit/UIKit.h>
@import Foundation.NSString;
@interface Logging : NSObject
@property (nonatomic) BOOL enabled;
void RLog(NSString *statement,...);
@endLogging.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希望我已经包括了足够的信息来解释我的问题,而不是删除太多,使它难以理解!
提前谢谢。
等离子体
发布于 2020-12-14 16:09:41
经过进一步的调查,我找到了一种利用信息here绕过这一问题的方法。
我添加了一个名为thisClass的类变量,然后在我的类init阶段为它分配了“self”。
@implementation Logging
id thisClass;
- (id) init
{
if (self = [super init])
{
thisClass = self;
}
return self;
}从C函数内部,我现在可以使用以下方法调用日志类中的方法:
[thisClass log:@"Testing"];在不需要将"self“作为参数的情况下,我将需要局部变量的其余代码移到我的'log‘方法中,并简单地使用C方法以简化的方式调用它。
等离子体
发布于 2020-12-13 23:42:31
void RLog(NSString *format,...)..。不是一个目标C方法,它只是一个C函数。
C函数是全局的,是独立的.这里没有self,也没有与日志记录的enabled连接。就这个函数而言,日志类可能根本不存在。
https://stackoverflow.com/questions/65281639
复制相似问题