gpt4 book ai didi

Objective-C:为什么这个函数名会引起警告?

转载 作者:行者123 更新时间:2023-11-29 05:06:46 28 4
gpt4 key购买 nike

这是原始头文件:

@interface TestDataHelper : NSObject {



}
+(void) populateTestData:(NSManagedObjectContext*) managedObjectContext;

+(void) testPopulateTestData:(NSManagedObjectContext*) managedObjectContext;

@end

当我编译此文件时,我收到此警告:

未找到方法定义

对于测试填充测试数据

当我忽略警告并在 iPhone 模拟器中运行应用程序时,出现运行时异常:

*** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“+[TestDataHelper testPopulateTestData:]:无法识别的选择器发送到类 0x104d8”

单独将方法重命名为“test”似乎可以解决问题

testXXX方法名称有什么特别之处?

编辑:实现已经完成。重命名方法名称(在 .h 和 .m 中)可以删除警告,最终的应用程序可以正常工作。

编辑 2:

这是函数test的实现(最初命名为testPopulatedTestData):

+(void) test:(NSManagedObjectContext*) managedObjectContext {

NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Stock" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
[sortDescriptors release];
[sortDescriptor release];

NSError *error = nil;
NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];

NSEnumerator *e = [mutableFetchResults objectEnumerator];
id object;
while (object = [e nextObject]) {
// do something with object
Stock* fc = (Stock*) object;
NSLog(@"get a fc %s", [[fc name] description]);
}

}

最佳答案

错误消息告诉您,您在头文件中声明了一个从未在任何地方实现过的方法。运行时错误告诉您同样的事情 - 您已将选择器 testPopulateTestData 发送到类 TestDataHelper 但它从未实现。

关于Objective-C:为什么这个函数名会引起警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4781913/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com