UI 进阶总结

//
//  ViewController.m
//  ReviewKonwledge
//
//  Created by lanouhn on 16/3/20.
//  Copyright © 2016年 joner. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // *** 国际技术指导师 邵琼 joner  **
    // SVN,Subversion,是一个开放源代码版本控制系统,采用了分支管理系统。代码托管中心,方便我们团队开发的合并代码的一项技术。SVN 技术采用了集中式的管理方式-要做到及时跟新代码,gitUP技术,采用了分布式技术。
    // 目前我们都是客户端(cornerStone,smartTree),一般去一个公司,人家会给个网址(http 说明为外网, svn:192..说明是内网);也有很多的命令行。
    // **SVN造成的冲突有:同时修改了同一行代码,同时增加了文件。 记住:配置文件,一定不能动。
    // 高手都是去避免问题,而不是制造问题--- 每次提交都要 update 一下。在做什么事之前要和团队沟通下。
    // 团队开发之storyboard 分支, 方案:storyboard Refrence--关联其控制器; storyboard ID(name:名字,story 的名字;ID:给控制器设置的 ID)




    ///第三方登录:省去了注册,前提:认可、login 请求、获取昵称,图片、服务器存储数据--- Umeng, shareSDK.涉及到两个程序之间的跳转,授权 SSO, 都要设置 URLSchume.
    // 去官网获取,AppKey 以及SecreteKey




    // 第三方环信即时通信
    // *区官方网战,导入:EMSDK,3.0的很多方法同时同步方法。需要我们自己封装助手类,具体包括:异步方法(子线程-执行耗时的任务, 主线程刷新界面),block。以及(1)设置是否自动登录-EMClientDelegate,(2)好友的管理代理-EMContactManagerDelegate,去监听回调的方法。(3)EMConversation中的conversationID是唯一的会话标识。同样设置EMChatManagerDelegate代理对象监听




    // 三大支付--支付宝,微信,银联
    // 同样操作:去官网文档,下 demo.都要设置 URL Scheum
    // AliPay:前端开发需要:(企业支付宝账号)Seller,(合作账号)PID,私钥(如:RSA).
    // WeixinPay:AppID, 付款的时候需要 prepareID.
    // UnionPay: 订单信息 00表示:正式





    // 地图:导入 CL(CoreLocation)
    // location,位置对象, mapView,地图属性, geocoder,地理编码。





    // FMDB,第三方的一个类。可以助手类,进行调用。
    // 具体助手类操作:(1)写单例; (2)FMDB属性; (3)获取 sqlite 数据库文件路径NSSearchPathFor; (4)创建表(打开数据库,执行 execUpdate,只有查询的时候为 execQuery,关闭数据库);(5) 插入- 带参数stu:image 类型--转为 NSNumber,UIImagePNGRepresentation:icon];  (6)查询-根据 stuID,data 转为 image---【uiimage imageWithData],创建模型比那个插入模型中。(7)修改,删除同理。(8)线程安全--多个操作同时操作数据库FMDatabaseQueue,解决线程安全的类。里面的操作是同步队列,也就是说里面的操作只能一个个执行。




    // cocoaPods,管理第三方依赖库的工具。cd , touch Podfile, pod search afnetworkin, pod install.
    // 比如:AFNetworkong, AFN能解析的格式有:application/json,text/json,text/javaScript。如果地址中有中文格式,那么需要转换。





    // 批量下载:
    // 助手类:session.datasource,网络请求,下载-根据模型; 还有个NSURLSessionDownloadDelegate的代理方法。
    // 两个模型-- 其中下载模型downLoadModel中,有个 block 属性(myBlock)、 在展示 cell 的时候,调用 setMyBlock.
    // 解决 cell 复用 -- 办法:下载页面--  didEndDisplayingCell时,block 置为 nil
    // ***助手中,有个 数据源-传给下载页面; 下载模型中,有个 block 穿进度; 解决 cell 复用,设置block 为 nil;






    // 动画,view 动画(UIView beginAnimations....UIView commitAnimation),可以调节大小frame,透明度alpha,旋转transform.;;; block动画,[UIView animationWithDouration ..],过渡动画(转场动画,[UIView setAnmiationTransition),关键帧动画,[UIView animationKeyFrame, Spring 动画-弹簧动画
    // CA(coreAnimation动画),他是 layer 的动画.layer是 view 下面真实的内容.CAKeyframeAnimation 动画;bezier 关键帧动画,转场动画- CATransition 动画; 动画组(CAAnimationGroup); CASpringAnimation
    // layer 的复杂属性--- 锚anchorPoint(0-1),位置position(相对于父视图的位置),他两永远重合,改变其中一个一定要在改变另一个(slider 的竖直摆放)





    // 多媒体,一定要导入 AVFoudation 头文件; 支持后台播放音乐,以及远程控制事件;
    // AVAudioPlayer(播放本地资源, 音量:-0到1与 slider 的值value0到1是对应的;; 快进: 当前的进度currentTime = 用 slider 的 value(0-1)乘总时间 douration); viewDidLoad 获取总时长显示在 label 上
    // AVPlyer,可以播放网络资源.
    // AVPlayerItem媒体资源对象. 观察 item 的 status 的属性变化,直到为AVPlayerItemStatusReadyToPlay时,里面有CMTime // item.douration.value(总帧),item.douration.timeScale(每秒多少帧)





    // swift,终有一天会取代 OC;里面没有.m/.h 只有.swift 文件。 var,let,func;用 OC 方法做事。
    // struct,class,安全构造性原则,属性都要初始化。
    // Array,Dictionary,值类型; 函数,类,block 引用类型。
    // block语法:typealias




    // 沙盒:本地存储你都放在沙盒路径中,doucudents(存储不太大的数据,plist 文件,sqlite 文件),library(cache,图片,音频;preferences,用户设置如:NSUserDefaults),tmp(临时路径)
    // 获取路径-NSSearchPath,拼接路径-stringbyAppendingPathComponent; txt,array,dictionary,写入都是:writetofile 读取:对应 stringWithContentOffile
    // 文件管理器 NSFileManager,他是单例的创建方法。文件对接器 NSFileHandle
    // 归档(序列化-复杂对象->NSData),反归档(反序列化,NSData->复杂对象)




    // coreData是一种技术,数据管理器NSManagerObjectContext.模型,数据库。




    // 网络解析,JSON.XML(SAX.DOM);
    // JSON 解析有个 JSONSerilization(串行),
    // SAX 解析基于事件驱动的方式,逐行解析;需要遵守协议 NSXMLParseDelegate,开始解析文件 douments,获取起始标签、结束标签(多次),解析 结束标签 elements,结束解析-documents。
    // dom 解析:一般用于较小的 xml 文件,全部读取;需要导入第三方 GDataXMLNode,遍历。




    // 网络请求,session
    // url->request->session(网络会话,尽量少建;数据请求,下载,上传)->task->resume,请求回来的数据都是一段段的。





    // 网络安全,有钥匙串,系统的MD5,第三方(RSA,加密与解密);涉及到了 addObsever-一般选择 new,写方法(obseverValueForKeyPath),最后 dealloc 移除观察者




    // 多线程
    // 一个进程里面有很多的线程
    // 可以自己创建,那么都在子线程,(1)NSThread,alloc (2)[NSThread detachNewThreadSelector:] (3)NSObject 创建 [self performSelector (4)NSOperatinQueue 开辟线程,NSInvocationOperatin,NSBlockOperatin 用来执行任务(他两都有个共同的抽象类-NSOperatin)。
    // GCD -串行(系统自带dispatch_get_main_queue,创建-DISPATCH_QUEUE_SERIAL);并行(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),自己创建-CONCURRENT)
    // GCD - diapatch_async(异步),延迟 after。
    // 并行-一定开辟了子线程;串行如果加上异步会效率很高,我们一般会采用。如果采用同步串行,一般会界面卡死。相互等待造成死锁。
    // 买票系统 - 一般我们采取在每次操作票数时,将其锁住 lock,操作完毕之后,我们再打开 unlock。




    // XMPP,JID 是唯一的。
    // XMPPStream,与服务器练习
    // XMPPRooster,完成好友的管理。
    // XMPPPresence,标记状态。




}

你可能感兴趣的:(UI高阶)