繁体   English   中英

iOS静态库,无法访问某些类方法

[英]iOS static library, cannot access some class methods

我在iOS中建立一个静态库。 在我的项目中导入该库之后,我在其他链接器标志中添加了-ObjC 但是,当我调用类方法(当前有3种可用)时,它们中的2种正在被调用并正确执行,但是最后一个却出现此错误: "+[RankConferenceLib joinConferenceWithName:]: unrecognized selector sent to class 0x5044dc"

这是我的库头文件

@interface RankConferenceLib : NSObject


+(void)initEnvironment;
+(void)orientationChange;
+(void)joinConferenceWithName:(NSString *)name;
@end

在库的.m文件中

+ (void)joinConferenceWithName:(NSString *)name
{
       //....codes
}

在我的项目中,我称他们为

- (IBAction)join:(UIButton *)sender {
    [RankConferenceLib joinConferenceWithName:@"User"];
}

请告诉我我在这里想念的东西。 这是我的第一个静态库。 我已经搜索过,但找不到与我在这里遇到的情况类似的任何帮助。 请提及您需要知道的其他内容。

谢谢。

尝试使用-all_load链接器标志运行

苹果资料

堆栈溢出答案

我已经检查了这一点,对我来说,它在没有添加任何链接器标记的情况下工作正常。

唯一的一种错误可能性是+ (void)joinConferenceWithName:(NSString *)name内部发生了某些事情

joinConferenceWithName内写一个日志以打印出参数name ,并确保此name正在调用并且该方法内部出现问题。

+ (void)joinConferenceWithName:(NSString *)name
{
    NSLog(@"the name is: %@", name);
}

最后 ,确保已将最新修改的静态库添加到项目中。

您可以从此处下载工作样本

@interface RankConferenceLib : NSObject
  -(void)initEnvironment;
  -(void)orientationChange;
  -(void)joinConferenceWithName:(NSString *)name;

  +(RankConferenceL *)SharedObject;
@end

在.m文件中...

static RankConferenceL *RankObject;
+(RankConferenceL *)SharedObject
   {
      if(RankObject == nil)
        RankObject =[[RankConferenceL alloc] init];
      return RankObject;
   }

- (void)joinConferenceWithName:(NSString *)name
   {
   //....codes
   }

您可以通过创建对象在任何其他类中全局访问其方法和变量,或者仅导入文件即可使用

 - (IBAction)join:(UIButton *)sender {
[[RankObject SharedObject] joinConferenceWithName:@"User"];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM