PDF 课件和源代码下载地址:
作者回复: 有图有代码 你这个很直观👍
作者回复: 这个是属于的,其实生命周期还有很多方法的调用,没有一一的详细介绍,loadView最常见的是和viewDidLoad混淆,可以通过这两个关键字搜索下 相关的讲解有很多。 简单的来说 loadView 就是创建vc中那个默认view的,在这个方法中可以创建自定义的view,比如我可以让vc的默认view是webview或者scrollview,就可以在这个方法中进行创建。viewDidLoad是view创建完毕之后调用,在这里我们通常加上子view等。
作者回复: 1. 防止父类初始化失败,导致整个逻辑的错误,所以要判断是否已经正确的alloc分配内存以及是否初始化成功。对于alloc方法来说系统是有可能失败的,同时init函数如果在需要传参数的时候,传入错误的参数也可能返回nil。 2. 生命周期相关的方法,其实我们都是在 override,如果我们不调用super,那么在super中相关方法内的实现就无法执行,只会执行我们override的方法。根据文档“If you override this method, you must call super at some point in your implementation.” 说明UIViewController自身在这些函数中肯定是有逻辑的,所以override的时候需要调用super。
作者回复: 是的,完整的生命周期其实还包括很多。在课程里知识简单的介绍让大家有个初步的了解。当然在课程中“完整”描述的不是特别准确
作者回复: <#animated#> 这个是 xcode 编译器的填写区域提示符,提示输入参数的信息, 同时按 tab 键可以快速切换输入焦点到内部,是 IDE 的一个功能。viewWillAppear的参数是 BOOL 值,<#animated#> 这里应该输入 YES or NO,可以按 tab 键后进行输入。
作者回复: 具体的步骤在后续的课程中有讲到,但是录制的时候是iOS12 ,如果使用iOS13的话需要有一些变化,在最近的几节课程下面的留言中都有讲到,这里在简单的重复下: 在iOS13中引入了SceneDelegate,所以在初始化的时候稍微有些不同,在其他课程的留言里也回答了一些,这里在整理下Xcode11中删除storyboard的方法 1. 创建项目,使用默认的Storyboard,并且运行成功。 2. 在xcode左侧文件导航中,删除Main.stroyboard文件 3. 在xcode右侧 General中,调整MainInterface到LaunchScreen.storyborad 4. 在Info.plist中,删除Application Scene Manifest中Scene Configuration->Application Session Role->item 0->Stroyboard Name这行 5. 在SceneDelegate文件willConnectToSession函数中,添加和视频中类似的代码 UIWindowScene * windowScene = (UIWindowScene *)scene; _window = [[UIWindow alloc] initWithFrame:windowScene.coordinateSpace.bounds]; _window.windowScene = windowScene; [_window setRootViewController:[[UIViewController alloc] init]]; [_window makeKeyAndVisible]; 整体上看,其实和之前的操作相同,就是删除MainStory以及对应的引用关系,然后在Scene中加入自己的window和rootController。
作者回复: 是的 在课程中为了方便讲解 没有使用storyboard 在window那节课中也会讲解如何取消storyboard哈
作者回复: 我这边用上传的Demo是可以的,确定下断点添加的时机,加好之后在重新运行下。
作者回复: viewController的初始化是在最开始的函数中调用的,有可能你断点加的晚了,可以先加断点之后在重新执行下试试。 如果还是不行,可以对比Demo看下具体哪里的写法不同