I'm trying to upgrade my app with Xcode5 but encountered a number of 'Semantic issues' in a third party library (being MagicalRecord). The quickest way to 'fix' this might be using the:
#pragma GCC diagnostic ignored "-Wundeclared-selector"
(from: How to get rid of the 'undeclared selector' warning)
compiler directive, but my gut-feeling says this is not the appropriate way to do this. A small code sample with the above error:
+ (NSEntityDescription *) MR_entityDescriptionInContext:(NSManagedObjectContext *)context {
if ([self respondsToSelector:@selector(entityInManagedObjectContext:)])
{
NSEntityDescription *entity = [self performSelector:@selector(entityInManagedObjectContext:) withObject:context];
return entity;
}
else
{
NSString *entityName = [self MR_entityName];
return [NSEntityDescription entityForName:entityName inManagedObjectContext:context];
}
}
where the entityInManagedObjectContext:
method is not defined anywhere.
Any suggestions on how to best fix these types of errors, thanks in advance?!
Yes you should.
instead of doing this:
[self.searchResults sortUsingSelector:@selector(compareByDeliveryTime:)];
you should do this:
SEL compareByDeliveryTimeSelector = sel_registerName("compareByDeliveryTime:");
[self.searchResults sortUsingSelector:compareByDeliveryTimeSelector];