我昨天在这里问了一个关于HOWTO debug in a framework的问题。
我有一个networkLib
和一个usingLibDemo
项目。
答案建议我将networkLib
拉入usingLibDemo
,以便我可以在源代码中进行调试。
现在我试过了:
networkLib
输出框架,并使用框架
usingLibDemo
。它有效。networkLib
的所有源代码复制到usingLibDemo
中
再次工作。networkLib
项目拖到usingLibDemo
项目中,设置
Header Search Paths
中的Build Settings
并在Target
Dependencies
中设置Build Phases
。它失败了。在#3情况下,仅在使用标头时才能成功构建项目。例如,我只使用协议:
@interface ViewController : UIViewController <LoginUIDelegate>
@property (retain, nonatomic) IBOutlet UITextField *usernameText;
@property (retain, nonatomic) IBOutlet UITextField *passwordText;
@property (retain, nonatomic) IBOutlet UIButton *loginButton;
- (IBAction)loginBtnDidClick:(id)sender;
@end
但是当我使用.m
文件中的代码时:
[[LoginBizLogic sharedInstance] loginWithUsername:username password:password tokenLogin:NO uiDelegate:self];
构建失败如下:
LoginBizLogic的@interface
以及LoginUIDelegate
在LoginBizLogic.h
文件中定义,但@implementation
位于“LoginBizLogic.m”文件中。
我认为LoginBizLogic
没有正确链接,与其他类相同,但我无法弄清楚问题出在哪里,或者在哪里配置。
非常感谢。
答案 0 :(得分:2)
阅读本Undefined symbols for architecture i386: _OBJC_CLASS_$_SKPSMTPMessage", referenced from: error
的答案如果您的类'.m文件未列在目标“构建阶段”选项卡的“编译源”步骤下,则可能会出现此类错误。通常Xcode会为您执行此操作,但有时会丢失绘图,您需要手动添加.m文件。
在您的情况下:
TargetSettings -> Build Phases -> Compile Sources -> add your .m file ->Build and Run
答案 1 :(得分:0)
谢谢你,@ iPatel
从你的回答中我知道问题所在:
以及如何显式编译导入的文件,但networkLib
有太多文件无法选择:
选择135个项目很烦人,我设置了依赖项:
所以我认为在编译usingLibDemo
之前,已经编译了networkLib
。
它是编译的,为什么找不到符号? -------&GT;没联系!我导入了用于链接的库:
就是这样!再次感谢。