iOS – iBistu4.0开发中的 ‘坑坑换坑坑’

最近有幸被选中去更新学校的民间校园应用 iBistu,实际开发中遇到了很多坑,也学到了很多新的东西,这里记录一下方便后续总结学习。


集成 ‘ 友盟U-Share ‘ 时遇到的坑,(基于Xcode9)

当我按照官方开发文档集成好之后仍然是提示如下错误

>>>>native2017-01-04 14:04:18 UMSoical(Error):[UMSocialPlatformConfig:177]:未找到相关平台类(lib{Platform}Handler.a):weixin
:请检查:
1、.a文件已加入项目target
2、-ObjC已设置(TARGET -> Build Setting -> Other link Flags)
2017-01-04 14:04:18 UMSoical(Error):[UMSocialManager:661]:创建相应平台失败:weixin
请检查:

在做好配置之后还是提示这个,最后迫于无奈去挨个检查找不到的文件是否存在,后来发现是Xcode9的Bug导致的。

在将SDK拖进项目时,明明将Target等信息打勾,然而SDK中文件的target还是没有打勾的,

所以只好将所以的文件挨个打勾。
遇到问题的时候去翻文档,去搜索错误提示,结果搜到的答案都是机器人般的回复。。。。
这应该是Xcode9的一个Bug,希望后续可以修复。


通过StoryBoard创建控制器  (入门)

创建storyboard,加载storyboard

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];

加载storyboard里的控制器

    UIViewController *vc  = [storyboard instantiateInitialViewController];

还可以通过Storyboard IID标识符创建

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
     UIViewController *vc  = [storyboard instantiateViewControllerWithIdentifier:@"storyboard ID"];

从xib文件加载view

这里分析两种方法,
第一种:

ICCASViewController *controller = [[ICCASViewController alloc] initWithNibName:@"ICCASViewController" bundle:nil];

第二种:

ICLoginViewController *controller = [[NSBundle mainBundle] loadNibNamed:@"ICLoginViewController" owner:nil options:nil].firstObject;

分析两种加载方法,第一种需要将File’s Owner 绑定到响应控制器上,第二种则不需要绑定,默认的NSObject即可;
initWithNibName:方法是延迟加载的,view中的控件是nil,在显示时才会加载。
loadNibNamed:用该方法加载出的视图中控件都已存在。
在目前的iPhone版本中,loadNibNamed:方法会返回一个数组,此时第0个元素是除File’s Owner和File Responder的第一个东西,如果xib中只有一个view或者viewController,那么用firstObject或者lastObject即可获取。