美文网首页
ios基础开发

ios基础开发

作者: 稻田深处草虫鸣 | 来源:发表于2016-03-11 09:55 被阅读91次

    备注: 所有笔记均与老师ppt相对应。 

    第一篇: 关于 view controller

    ppt1:

    model:持久化保持状态的部分

    view: 直接和用户打交道

    controller: 传递与储存数据 承上启下

    view用delegate传信息给controller(data owner, file source)

    MVC具体会在设计结构的课程里讲述

    之间起到 单项作用 若耦合

    ppt2: 各种框架的选择

    cocoa本来是用来给小孩子的玩玩

    MVC的弊端: GUI中程序琐碎 10个object-> 10 presentation

    -> MVP  ( model - view - presenter)  UILogic 中加入自动化UIStates  取出一部分和界面相关的data binding

    -> M-V-VM (model - view - view model) 双向的data binding

    问题: 数据间的关系 难以表达 尤其在三维动画中体现完全

    ->FRP(functional reactive programming) 用数据流, 中间搭建好关系(map),就可以自动的反应了 (微软)

    MVC是一切的基础

    ppt3:

    UIViewController 实质 就是一个 API(Application Programming Interface应用程序编程接口)

    viewcontroller 可以 管理view + 传递数据(多个界面的controller之间也需要传递)+适应设备(旋转补偿etc)+。。。。

    viewcontroller的结构是一个树

    ppt4: 创建rootViewController 的过程

    info.plist

    本身会自动帮忙load界面 loadMainStoryboard…

    若这个函数被删去 则可以通过uiapplicationdelegatedidFinishLaunch来 也就是调用手写的代码

    若我们手工不写的话 则会黑屏, 因为没有uiwindow了

    window是UIwindow的一个实例

    前面是 view 后面的 就是window

    UIMainStoyuboardFile NSMainNibFile 分别有两个主界面

    之前就是用代码完全创建view controller

    window

    UIWindow(一切可视化界面的起点) - UIview

    [实验尝试]得

    若mainstoryboard后面的value没了或直接删去整个storyboard 界面也会由蓝色变为黑色

    若mainstoryboard后面的value放了错误的东西  界面也会由蓝色变为白色 然后会出现如图所示的错误

    把mainstoryboard删掉 手动创建它 但是不给他viewcontroller

    这个代码会在练习说明里面提供

    viewcontroller怎么拿到他的东西呢?

    nibname的可能性

    默认的话 viewcontroller 从 storyboard 来, 那么nib已经嵌入其中

    若自己用程序写 则按照

    若什么都没有 就会调用existingNibNameMatchingClassname

    练习:

    把对话框中的 1,2,3,4,5,6 都去试验一下

    用断点或者NSLog来理解viewcontroller的 lifecycle

    展示的每个viewcontroller都需要上手练一遍

    注意: 以uicontroller大头的不会自动寻找nib

    viewdisappear可以放部分的信息 但不要放太多

    把UIviewcontroller的文档要看一遍

    ppt5:

    viewcontroller会尽量推迟view的加载

    通常当自己变成主窗口的时候才会开始阅读

    自己写的代码 就会 调用 loadcontroller

    自定义的loadview 是不会调用supercontroller的

    如果有UI view controller 大头的 注意系统根本不会去加载后面的内容咯

    ppt6:

    life circle

    will-did

    viewWillDisappear:  清理工作

    ppt6: view presentation每个人都要去写一遍

    用-presentviewcontroller:

    用来传递数据

    uimodelpresentationFormSheet: 邮件

    uimodelpresentationcurrentcontext: 分屏工作

    建议还是用来看文档比较好

    showviewcontroller: ios8 之后就有了 建议也去模拟一下子

    如何回传数据: 后一步-》前一步:

    前一步 delegate -》 后一步

    后一步传消息 -> delegate -> 前一步dismiss



    第二篇: 关于storyboard

    打开viewcontroller的sourcecode 我们会发现它也是一个xib也就是nib文件 但是它和普通的view controller又不一样 它放的是一个场景(scene)

    注意缩小的情况下无法编辑这个场景, 需要双击进入才能够编辑

    一个storyboard是一个故事

    如果没有把第一个view删去的话,nib会默认为先调用这最初的view 而不是viewcontroller的名字

    storyboard上3个按钮的含义 从左到右依次为:

    view的名字 + 上面第一个响应的事件 + 。。。

    除了用按钮去触发之外 还可以选择用直接在导航栏拖动

    要把UIstoryboard 的 reference也看一看


    第三篇: 关于life cycle

    ppt5:

    在做appdelegate 中 图示的程序是非常值得学习的

    NSStringFromClass([AppDelegate class])

    与直接放上 AppDelegate 其实是等价的,

    可是图中的方法更好,因为它可以保证你后续的appname改变的话,在这里也会自动跟着改变的。

    ppt6:

    关于port mac, event queue, main run loop (不断的循环,来侦探有的触摸等 用户行为) 都是mac系统已经帮我们准备好的 我们要做的就是 通过viewcontroller来规定遇到了这些行为我们要去做些啥子

    解释一个概念 runloop mode: 就是指 一组数据源

    runloop就是为了侦探信息来发给我们的主线程用的。

    ppt7:

    注意在 willFinishLaunchingWithOptions (尽量在这里去做初始化)里面要放应用级的初始化工作,但是不要做很多太耗时的工作

    如果需要做的话,用dispactch cue 开一个ebool的线程来完成会更好一些

    /*

    当UI界面的临时状态还没有恢复,并且我们希望做一些应用级的初始化工作时,可以放到以下哪个方法中:

    A. -(BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    • B.- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptionsC.- (void)applicationWillEnterForeground:(UIApplication

    D.- (void)applicationWillTerminate:(UIApplication *)application

    应该选择A

    */

    界面的状态已经恢复过了,但是UI 还没有放到屏幕上,进入了inactive状态。

    inactive也就是说代码在执行,但是界面上看不见,用户的动作不会被响应

    -> didFinishLaunchingWithOptions 这里可以去看看 有哪些options(分别对应了各种稀奇古怪的打开方式)

    app programming guide for iOS

    preserving your app’s visual appearance across launches 有详细的解释

    要想真的很好的完成ios开发 还需要去阅读很多。

    -》 applicationdidbecomeActive

    这样用户就进来啦!!

    此刻若打进来电话,或着按了home按钮

    -> applicationWilllResignActive

    我们去做一些保护线程

    -> applicationDidEnterBackground

    这个只会有5s(系统说),实际大概为100s。如果需要更长的可以申请更长的 (startgroundTimeRemaining 大概10min)

    ps: 后台运行程序和这里的不一样,比如高德地图,音乐软件啥子的,这个自己去看吧(见app programming guide for ios)。

    因为内存不够啥子的,而且还没有被suspend(比如5s后就随时有可能被suspend)

    -> applicationWillTerminate

    所以千万不要在这里做一些关键的动作。

    若回复活

    applicationWillEnterForeground

    会在调用app delegate后发出同名的ui notification 这样系统中除了app delegate的部分也可以去访问这个事件。

    ppt8:

    移动应用的特点: 启动 - 使用 -中断 -恢复

    用户正在你的程序 滚动下来 找图片,然后一个电话打进来。 UI状态的保持

    用调试的一个常见方法: NSLog(@“will finish launching”);

    21’ 开始讲解 在边栏上可以设置断点

    断点中如果需要跟踪某个变量可以利用 filter, add, 或者

    右下角窗口的go self.window.rootViewController

    + add symbolic breakpoint

    swift breakpoint

    except breakpoint (特殊异常错误)

    test failure breakpoint(只在没法运行的时候的时候)

    debugger  command

    log message也是可以的

    汇编语言中需要注意的其实只是 callq 意思是调用了q这个函数

    idapro 对于汇编语言弄的熟悉的人 可以用。

    接个设备去调试会好很多哟~

    练习:

    xcode的每个调试功能 选择: 用符号断点,来看一下uikey的内部具体内容

    nslog

    观看: iOS调试实战

    http://e.gensee.com/v_72a754_6


    第六篇: 关于navigation bar

    1, 要有统一的设计风格,要让顾客在固定的地方做固定的事情

    2. navigation bar(又叫面包屑)最常用的界面跳转控制, 最经典的可以在我们的setting里面找到。

    3. 这个只会有上一步 - 下一步,

    而不像网页那样所有的网站都会有

    因为有uinavigation controller

    navigationitem 形式: 左(上一个)+中(title)+右(下一个)

    第二课:

    -ppt5: navigationbar 结构

    1. 需要理解的是navigationbar 管理的是 navigationitem

    2. push/pop的都是item

    ppt6:

    所有能显示的item都是继承自uibaritem

    enabled 若为false 就是灰掉不能点的那种

    title<>image 文字题目<>图片题目

    tag: 所有的界面都有的这种tag 有多个的那种(尤其是同类型的)可能需要区分 于是特别需要tag

    imageinsets: 定位的时候会用到的

    uibaritem 首先是一个button(就是有action, target的特点)

    -initwithbarButtonSystemItem: target: action  -system

    -initWithCustomView (大概的action就没了)  -自定义的

    Custom: 意思是自己添加

    ppt7:

    除了navigation bar 还有tool bar

    ps:  实践

    插入图片的话 可以不放在catalog里面而是放在preview里面,除了imagename的方法还有mainbundle里面找到图片的ui号码,以免把所有的东西都存在系统的图片缓存里面。

    放在Project里的图片可以用imageByName的方法访问,也可以用mainBundle找到图片的URL来访问.


    补充: 键盘遮挡问题

    相关文章

      网友评论

          本文标题:ios基础开发

          本文链接:https://www.haomeiwen.com/subject/emstlttx.html