尝试编写一些在 iOS 和 OS X 之间工作的通用库。为了不通过在代码中放置大量#if TARGET_OS_IPHONE 来使应用程序混乱,我想我可以使用通用的 .h 子类化 UIFont 和 NSFont 和只需为每个构建使用单独的 .m 文件。所以我有以下子类结构 MyFont.h 和 MyFont_iOS.m 和 MyFont_OSX.m。每个目标都包含相应的 .m 文件。在 iOS 上运行良好,但在 OSX 上执行时,我得到一个 EXC_BAD_ACCCES,它使用类似的行创建字体对象
MyFont *myFont = [MyFont fontWithName:@"Arial" size:132.0];
我不能继承 NSFont 吗?
这是我的 NSFont 子类的基本代码示例(请注意,此时我在子类中没有专门的代码。这只是一个基本子类)
我的字体.h
#if TARGET_OS_IPHONE
@interface MyFont : UIFont
#else
@interface MyFont : NSFont
#endif
@end
MyFont_iOS.m
#import "MyFont.h"
@implementation MyFont
@end
MyFont_OSX.m
#import "MyFont.h"
@implementation MyFont
@end
尝试使用子类字体(在 iOS 应用程序中 - 工作正常!)
#import "MyFont.h"
...
MyFont *myFont = [MyFont fontWithName:@"Arial" size:45.0];
尝试使用子类字体(在 OS X 应用程序中 - 崩溃!)
#import "MyFont.h"
...
MyFont *myFont = [MyFont fontWithName:@"Arial" size:132.0];
仅供参考 - 我也在这条线上收到警告
使用“NSFont *”类型的表达式初始化“MyFont *”的不兼容指针类型
所以我肯定做错了什么,但只是不明白为什么它迫使我使用 NSFont 但在 UIFont 上工作正常。
感谢您的任何指导!