Iphone 如果通过xcode缺少库,则忽略代码分支
在AdWhirl SDK(一种多ad网络组装)中,该框架的结构是这样的:如果您不从Google AdSense或AdMob额外导入附带的库,那么在编译和运行代码时,它将忽略这些代码分支。也就是说,框架中有一些代码需要运行AdSense SDK,但是如果不包括AdSense,它只会忽略这些代码,没有编译器错误或其他任何东西。没有用户要求的注释代码或类似的东西Iphone 如果通过xcode缺少库,则忽略代码分支,iphone,objective-c,ios,xcode,frameworks,Iphone,Objective C,Ios,Xcode,Frameworks,在AdWhirl SDK(一种多ad网络组装)中,该框架的结构是这样的:如果您不从Google AdSense或AdMob额外导入附带的库,那么在编译和运行代码时,它将忽略这些代码分支。也就是说,框架中有一些代码需要运行AdSense SDK,但是如果不包括AdSense,它只会忽略这些代码,没有编译器错误或其他任何东西。没有用户要求的注释代码或类似的东西 我正试图构建一个具有类似需求的框架,但我一辈子都搞不清楚他们是如何做到这一点的。显然,默认情况是,由于缺少库,在编译时代码中会出现链接器错误
我正试图构建一个具有类似需求的框架,但我一辈子都搞不清楚他们是如何做到这一点的。显然,默认情况是,由于缺少库,在编译时代码中会出现链接器错误。如何导出具有此功能的框架(当前为.a文件) 当您执行以下操作时:
[[ClassName alloc] init]
实际上,您要做的是将alloc
消息发送到ClassName
元类,然后将init
发送到元类试图返回的ClassName
实例(或者如果元类因缺乏资源而返回nil
,则不发送给任何人)
此外,Objective-C运行时是反射的。除此之外,这意味着您可以查询它,从类的字符串名称中查找元类。例如
Class metaclass = NSClassFromString(@"ClassName");
它返回指定的元类,如果该类不存在,则返回nil
。综上所述:
id instance = [[NSClassFromString(@"ClassName") alloc] init];
如果应用程序知道此类类并且有合适的资源可用,则将为您提供该类的实例。在可选链接库的情况下,这是一种尝试获取类实例的方法,但如果未链接包含该类的库,则会安全地失败