试图编写一些可在iOS和OS X之间使用的通用库。为了不会通过在代码中放置大量#if TARGET_OS_IPHONE来混淆应用程序,我认为我可以使用UIFont和NSFont子类来使用子类一个常见的.h文件,每个版本都使用单独的.m文件。所以我有以下的子类结构MyFont.h和MyFont_iOS.m和MyFont_OSX.m。每个目标都包含适当的.m文件。在iOS上正常工作,但在OSX上执行时,我得到一个EXC_BAD_ACCCES创建字体对象,如子类化NSFont
MyFont * myFont = [MyFont fontWithName:@“Arial”size:132.0];
我可以不子类NSFont吗?
下面是该NSFont子我的基本代码示例(注意由于这个时候,我没有专门的代码在子类中,这仅仅是一个基本的子类)
MyFont.h
#if TARGET_OS_IPHONE
@interface MyFont : UIFont
#else
@interface MyFont : NSFont
#endif
@end
MyFont_iOS.m
#import "MyFont.h"
@implementation MyFont
@end
中号yFont_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];
仅供参考 - !我也越来越警告在此行
种不兼容的指针类型初始化“MyFont *”类型的表达式“NSFont *”
所以我肯定做错了什么,但就是不明白为什么它迫使我使用NSFont而精的作品UIFont。
感谢您的任何指导!
FacePalm!我经常想到这个问题。谢谢!这完美的作品! –