ios基础开发

备注: 所有笔记均与老师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来访问.



补充: 键盘遮挡问题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,104评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,816评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,697评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,836评论 1 298
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,851评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,441评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,992评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,899评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,457评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,529评论 3 341
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,664评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,346评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,025评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,511评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,611评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,081评论 3 377
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,675评论 2 359

推荐阅读更多精彩内容