Objective c 子类化NSFont
尝试编写一些在iOS和OS X之间工作的通用库。为了避免在代码中加入大量的if-if-TARGET-if-OS-IPHONE而造成应用程序混乱,我想我可以使用一个通用的.h对UIFont和NSFont进行子类化,并且只需为每个构建使用单独的.m文件。因此,我有以下子类结构MyFont.h和MyFont_iOS.m以及MyFont_OSX.m。每个目标都包含相应的.m文件。在iOS上运行良好,但在OSX上执行时,我会收到一个EXC_BAD_ACCES命令,用类似 MyFont*MyFont=[MyFont fontWithName:@“Arial”大小:132.0] 我可以不子类NSFont吗 这是我的NSFont子类的基本代码示例(注意,到目前为止,我在子类中没有专门的代码。这只是一个基本子类) MyFont.hObjective c 子类化NSFont,objective-c,macos,nsfont,Objective C,Macos,Nsfont,尝试编写一些在iOS和OS X之间工作的通用库。为了避免在代码中加入大量的if-if-TARGET-if-OS-IPHONE而造成应用程序混乱,我想我可以使用一个通用的.h对UIFont和NSFont进行子类化,并且只需为每个构建使用单独的.m文件。因此,我有以下子类结构MyFont.h和MyFont_iOS.m以及MyFont_OSX.m。每个目标都包含相应的.m文件。在iOS上运行良好,但在OSX上执行时,我会收到一个EXC_BAD_ACCES命令,用类似 MyFont*MyFont=[My
#if TARGET_OS_IPHONE
@interface MyFont : UIFont
#else
@interface MyFont : NSFont
#endif
@end
MyFont\u iOS.m
#import "MyFont.h"
@implementation MyFont
@end
#import "MyFont.h"
@implementation MyFont
@end
MyFont\u OSX.m
#import "MyFont.h"
@implementation MyFont
@end
#import "MyFont.h"
@implementation MyFont
@end
尝试使用子分类字体(在iOS应用程序中-工作正常!)
尝试使用子分类字体(在OS X应用程序中-崩溃!)
仅供参考-我也收到了这条线上的警告
使用“NSFont*”类型的表达式初始化“MyFont*”时,指针类型不兼容
所以我肯定是做错了什么,但就是不明白为什么它强迫我使用NSFont,但在UIFont上效果很好
谢谢你的指导 fontWithName返回NSFont/UIFont-已修复。它不能被分类 即使它起作用,也不是明确的行为
您可以使用一个包装器来保存平台特定的字体 e、 g
fontWithName返回NSFont/UIFont-已修复。它不能被分类 即使它起作用,也不是明确的行为
您可以使用一个包装器来保存平台特定的字体 e、 g
包装器是一种很好的方法。另一种选择是:根据目标
#define MyFont NSFont
或
如果两者都需要不同的代码,则可以向类添加扩展 包装器是一种很好的方法。另一种选择是:根据目标
#define MyFont NSFont
或
如果两者都需要不同的代码,则可以向类添加扩展 脸掌!这是我反复思考的典型案例。非常感谢。这很好用!脸掌!这是我反复思考的典型案例。非常感谢。这很好用!谢谢@Daij Djan花时间来帮助我。这是我尝试的第一件事,因为我必须更改所有的UI代码来处理新属性,所以我的代码非常混乱。例如,我必须从textView.font=myFont转到textView.font=myFont.font。看起来是多余的,需要我更新大量的UI代码。谢谢你的帮助。谢谢@Daij Djan花时间帮我。这是我尝试的第一件事,因为我必须更改所有的UI代码来处理新属性,所以我的代码非常混乱。例如,我必须从textView.font=myFont转到textView.font=myFont.font。看起来是多余的,需要我更新大量的UI代码。谢谢你的帮助。
#define MyFont UIFont