扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
第一步:编程入门课
多伦网站建设公司成都创新互联,多伦网站设计制作,有大型网站制作公司丰富经验。已为多伦近1000家提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的多伦做网站的公司定做!
时间预计:4个星期
推荐看公开课,Udacity也行,网易公开课也行,自己找一个面对对象语言(一般是JAVA, C++, Python)的课。我是在网易公开课看的斯坦福的CS106A,学的JAVA。
如果你纯粹学iOS开发,不推荐看哈佛CS50,CS50是给CS系的学生介绍整个计算机世界的框架,讲的内容比较多,进度比较快,对iOS开发其实有点累赘了。(臣妾有点跟不上啊!!)
计划安排是一天一课,看课程要求的书(至少看完一本)及大部分作业。这一阶段重点不是语法,而是以下3个目标。
目标:
1. 让自己对编程这件事感到适应。
写hello world。
怎么写function, 怎么调用function。
全局变量,局部变量这类基本知识点。
都是基本的东西。看看书,写多两个程序就欧啦。
2. 掌握编程语言的基本要素。
编程语言4个要素:
a. 基本的数据类型:整数,实数,character, string, boolean
b. 基本的运算符号:+-×/++--那啥的
c. 怎样输入输出
d. 怎样控制程序:sequence,selection,loop
3. 了解编程范式
面对过程编程。
面向对象编程。
第二步:上手iOS!
时间预计:2星期
强烈推荐CS193P,老头子讲的超级好!我的很多东西(对象思维啥的)是在这里跟着做练习的时候才真正明白的(好啦,也可能是上一堂课练习做得少的原因)。如果等到9月应该itunes U上会开始教iOS 7了。网易公开课的是2010年iOS 5版的,前10堂课,也行。(iTunes U上有完整的课)
CS193P说有prerequisite,一开始被吓到,事实证明还是可以学下去的。头两节课一头雾水,没关系,把itunes U上的课件下载下来,把所有代码打出来,然后一个个元素对应之前学的语言匹配,再不懂先放着,继续学后边的,过几天打多点代码就懂了。
感觉学5、6堂课,一个星期左右就可以开始进入下一阶段自己做东西了。之后用啥学啥,每堂课都有主题的。速度慢点的同学们,这阶段跟我一样准备两个星期吧!
第三步:开发app!
时间预计:2星期(本人...1个半月,实在不好意思说出口)
这个时间就可长可短啦,还包括美工,交互啥的。坚持要用啥学啥的原则,其实就是知道iOS SDK都有什么组件,每个组件有什么function而已。stackoverflow, Github, apple sample code多上,搜索引擎多用。如果有个师傅,这个阶段真的是进步神速。
好的!不出意外,你的第一个app就这么新鲜出炉了!从今天开始,成为一个冷艳逼格高尚的iOS开发者吧!
最近接到一个单反相机的需求,就是通过iOS设备OTG数据线与单反相机连接,实现在APP上控制单反的效果。
Android 的我已经实现了大部分功能,如:控制拍照、设置ISO、对焦、实时画面显示等等。
接下来,需要了解iOS通过OTG线连接相机的实现方法,目前找到的资料,先做一下总结:
这是一个完整的使用 USBMuxd 方式实现 iPhone App 跟 Mac App 进行 TCP 通信的例子。因为 Mac OS 系统中天生就自带了 USBMuxd 服务,所以 peertalk 的 Mac 端程序是比较简单的。外设一般都不会是 Mac 系统,而是 Android 或者 Linux 系统,那怎么办呢?住下看
自己在系统中集成 USBMuxd 服务,这里可以利用到实现在外设上集成 USBMuxd 服务。
上面的都是简单的数据传输,那么如果要视频实时传输?
1、使用RTSP协议,可集成ffmpeg框架(可去CSDN上详细系统得学习这个框架,有必要),连接到硬件发送视频的端口,解析数据流,并显示。
一般使用的网络数据传输中一般涉及到7层,分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。对于程序开发人员而言能够用到的就是传输层,会话层,表示层和应用层。
http协议 对应于应用层
tcp协议 对应于传输层
ip协议 对应于网络层
上边是我们每次网络请求中,各个协议在每个层中的应用,下边的层都为上一层提供了传输基础。上边三层共同构成了一次网络请求(当然还有更底下的我们不做研究的层),而Socket则是对TCP/UDP,IP协议(即传输和网络层)的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/UDP,IP协议。
那么这时候我们就一定要了解HTTP请求和Socket之间到底是怎么样的一个关系呢,又该怎么理解呢?其实Http请求就是基于TCP/IP协议的一层的Socket再封装,只是Socket在数据的传输过程中数据是无法识别的内容如果想要使传输的数据有意义,则必须使用应用层协议,应用层协议很多,有HTTP、FTP、TELNET等等,也可以自己定义应用层协议。而Http协议就是现在使用最广泛的应用层协议,这样我们的才保证了我们可以在网络请求中可以自定义收到的JSON/XML格式的数据。而Http请求实际上每次本质上就是先建立一次Socket长链接 然后接受数据包(因为TCP协议的数据传输是数据流可能是多个包的 Http通过请求头会对包进行处理和组合),当数据包全部接收完成之后,通过协议转换成我们想要的格式返回给我们,然后关闭长链接,这样的一个流程完成一次Http请求。这个时候我们就会发现一个问题,只有我们主动的给服务器端发送请求的时候服务端才会给我们响应返回数据。而且每次网络请求又会重新开启TCP协议中的三次握手的过程,每次使用肯定是耗时的(当然现在基于Http2.0的多次网络请求可以减少握手次数)。但是也只是在每次Http之后还是会关闭Socket而且服务器端都不能在我们没有请求的情况下主动给我们发送消息,这个时候我们就可以使用Socket解决这个问题了。
如果我们建立了一个Socket长链接,不断开服务器端就能和我保持通讯了,这也就是我们现在用的及时通讯软件和视频是直播软件实现的原理(当然视频直播还涉及到很多其他的知识,一直觉得那才是iOS开发中最大的难点),现在我们知道了为什么我们有了Http还要了解Socket,那么接下来就开始介绍Socket底层的一些实现原理,我一直觉得iOS开发如果只是知道一些三方框架如何使用,在框架使用的过程中遇到了实际的问题,我们实际上是很难有实质上的思路去解决问题的,所以很多东西我想最好先从原理上去了解。
这时候我们就要做Socket变成就需要引入几个知识点。
1.地址
1.地址在程序中,我们如何保存一个地址呢?在中的sockaddr便是描述socket地址的结构体类型.
/** [XSI] Structure used by kernel to store most addresses.*/
struct sockaddr {
__uint8_t sa_len; /* total length */
sa_family_t sa_family; /* [XSI] address family */
char sa_data[14]; /* [XSI] addr value (actually larger) */
};
为了方便设置用语网络通信的socket地址,引入了sockaddr_in结构体(对于UNIX Domain Socket则对应sockaddr_un)
/*
* Socket address, internet style.
*/
struct sockaddr_in {
__uint8_t sin_len;
sa_family_t sin_family;
in_port_t sin_port;//得是网络字节序
struct in_addr sin_addr;//in_addr存在的原因则是历史原因,其实质是代表一个IP地址的32位整数
char sin_zero[8];//bzero之,纯粹是为了兼容sockaddr
};
在实际编程的时候,经常需要将sockaddr_in强制转换成sockaddr类型。
2.端口
在本地的进程中,每一个进程都可以通过PID来标识,对于网络上的一个计算机中的进程如何标识呢?网络中的计算机可以通过一个IP地址进行标识,一个计算机中的某个进程则可以通过一个无符号整数(端口号)来标识,所以一个网络中的进程可以通过IP地址+端口号的方式进行标识。
3网络字节序
谈网络字节序(Endianness)之前我们先说说什么是字节序。字节序又叫端序,就是指计算机中存放 多字节数据的字节的顺序。典型的就是数据存放在内存中或者网络传输时的字节的顺序。常用的字节序有大端序(big-endian),小端序(litle-endian,另还有不常见的混合序middle-endian)。不同的CPU可能会使用不同的字节序,如X86,PDP-11等处理器为小端序,Motorola 6800,PowerPC 970等使用的是大端序。小端序是指低字节位存放在内存地址的低端,高端序是指高位字节存放在内存的低端。 举个例子来说明什么是大端序和小端序: 比如一个4字节的整数 16进制形式为 0x12345678,最左边是高位。
大端序
低位 高位
12 34 56 78
小端序
低位 高位
78 56 34 12
TCP/IP 各层协议将字节序使用的是大端序,我们把TCP/IP协议中使用的字节序称之为网络字节序。 编程的时候可以使用定义在sys/_endian.h中的相关的接口进行本地字节序和网络字节序的互转。
#define ntohs(x) __DARWIN_OSSwapInt16(x) // 16位整数 网络字节序转主机字节序
#define htons(x) __DARWIN_OSSwapInt16(x) // 16位整数 主机字节序转网络字节序
#define ntohl(x) __DARWIN_OSSwapInt32(x) //32位整数 网络字节序转主机字节序
#define htonl(x) __DARWIN_OSSwapInt32(x) //32位整数 主机字节序转网络字节序
以上声明中 n代表netwrok, h代表host ,s代表short,l代表long
如果数据是单字节的话,则其没有字节序的说法了。
4.半相关和全相关
半相关(half-association)是指一个三元组 (协议,本地IP地址,本地端口),通过这个三元组就可以唯一标识一个网络中的进程,一般用于listening socket。但是实际进行通信的过程,至少需要两个进程,且它们所使用的协议必须一致,所以一个完成的网络通信至少需要一个五元组表示(协议,本地地址,本地端口,远端地址,远端端口),这样的五元组叫做全相关。
5.网络编程模型
网络存在的本质其实就是网络中个体之间的在某个领域的信息存在不对等性,所以一般情况下总有一些个体为另一些个体提供服务。提供服务器的我们把它叫做服务器,接受服务的叫做客户端。所以在网络编程中,也存在服务器端和客户端之分。
篇一:分享简单学习iOS开发的方法
随着3G技术的普及与智能终端的快速发展,逐渐的移动开发者最受企业的欢迎,特别是iOS软件开发人才更是得到了企业的青睐,从现在情况来看,iOS培训和iOS软件开发人才有些严重供不应求。
容易上手的,学习iOS要注意到每个细节,因为每个细小的知识都有可能改变这个程序,如果有一点的错误都会导致整个程序无法运行,其实学习iOS和上学学习一样,都是从最基础的开始学起,慢慢的积累知识。如果想学好iOS,现在单单在网上学习是有点out了,可以选择零学费,就能够入学的培训学校学习一下,如果没有合适的话,可以了解一下培训机构,找一个口碑不错的,这样结合理论和实际才能够学好iOS。
在课前一定要做好准备资料及准备内容,要知道老师要讲什么?先做好预习,这样有准备的上战场才会学得更好,在课堂上认真听老师讲课,在电脑上操作老师所讲的内容,如果有不懂的一定要及时向讲师问清是怎么回事,课后多做几次练习,那么就不是问题了。3
如果听不懂怎么办?
这些现象很正常,谁也不敢保证讲师所讲的知识都能够无一不漏的听明白,能够在电脑上操作出来,那么如果遇到不懂得就要直接问,还可以先预习今后再去学习理论课的时分就能够有对于性的去听了,教师讲到你现已把握的内容时,你能够注意听一下讲师是不是有了新的见解及创新的认识、讲的和你了解到的是不是一样,如果不太一样的话,那么就要做下记号,课下与老师沟通,承认这个
常识点的真实意义;若是讲到你预习时不会的常识点的话,你更大概仔细的去听了,认真的去了解一下到底是怎么个意思?
篇二:如何快速学会ios开发
针对学习iOS开发怎么样?想学iOS开发如何才能快速学习?没有基础怎么快速学习iOS开发等问题,蓝鸥iOS培训专业老师指点明灯!看着身边学iOS开发的人拿了高工资,很多人按捺不住了。但菜鸟真的也可以成为iOS开发软件工程师吗?只要有恰当的学习方法,学习软件开发并不难。对于软件初学者来说,主要做到以下几点:
一、打好基础,不能一步登天
学习iOS,首先要学习C语言,很多人跳过C,直接学Objective-C,这是极不可取的。Objective-C是C的超集,必须有C的基础,学习才能更好更快的进行。不要一开始就盲目崇拜别人的大项目,要从小项目开始,一步一个脚印,遇到困难不要退缩,解决困难也是学习的过程。
二、必须如蜜蜂,多方采集花蜜
在学习初期对于iOS没有概念,最好的办法就是多看别人的代码,多吸取别人的养分。遇到不懂得问题不要跳过,而是要多问,多向人请教,学习别人的思路,吸取有益的知识,并做好学习笔记。积少成多,会成为你不小的财富。
三、勤动脑,多动手,有创新精神
软件开发者是为了让软件实现更丰富更强大的功能,必须有很强的实际操作能力。作为iOS开发工程师,不但要了解用户需要哪些功能,有哪些需求,还要多动脑,开发出符合市场以及时代需求的项目。这都需要软件开发者具备很好创新精神。
由此可见,学习iOS开发,只要肯吃苦,有恒心,菜鸟也可以有很蓝,很广阔的天空。iOS培训很注重基础教学,教学方式与大学不同,在教授理论知识的同时,更注重实践技能的培养。摆正心态,切勿操之过急,囫囵吞枣,将每天所学定义为就是今后工作要用的,这样你便会认真对待每一次学习、每一行代码和遇到的每一个难题。
参加iOS开发培训也可以,现在iOS开发培训大概也就4个月时间,花一两万系统学4个月也是一个不错的选择,虽然要一两万,但是效果跟自己学肯定是不一样的,要是自己学跟有老师带着学一样,那这个世界上将没有学校存在了。对于参加iOS开发培训的一定
要选对机构,有句话说得好,选对比选好有时候重要太多。你考30分的'成绩让你去北大清华也不一定能够成就了呢,所以选择口碑好的机构,专注iOS开发的机构比较好,毕竟咱基础不好,那些机构做杂很难做精。不管是快速学还是慢慢自学还是选择iOS培训机构系统培训,只要你投入进去就好,坚持下去一定会有大收获。不管做什么或者学什么一定要避免三天打鱼两天晒网,这样效果不会明显。
篇三:零基础学iOS开发的方法
怎么学习iOS开发,尤其是对于没有基础的,甚至是0基础的朋友而言,要学习iOS开发就需要注重方法了。由于iphone手机带来的手机应用狂潮,现在很多人都希望从事这块的开发。很多初学者可能会问,没有基础怎么样才能学好iOS开发,我们要看什么书呢,还是什么视频,其实这些都不是重要的,重要的是,你认为自己可以学好iOS开发,认为自己可以坚持下来,这是关键啦。
其实学很多语言都是通的,即使0基础学习也不怕,从C语言入门,因为iOS开发用的是OC语言,是在C基础上的,不过也跟C不是很搭界,你可以直接学习OC语言也可以,还有开发工具是用Xcode,是在Mac系统的,你多摸索一下就可以开发简单的应用了,建议你买一本iphone开发秘籍第二版看看。学语言,无非就是要学好基础,弄清楚概念,然后做个简单的例子,慢慢的体会,基础打好了,到后面你会觉得突然自己提高了很多,很多东西都自然而然地明白了,在黑暗中的努力是为了迎接光明。
我觉得学iOS开发,首先心态要好,不要想着我已经学习很长时间了,可以找个好工作,可以赚钱了,牛人除外,不过大多都是普通人。
先慢慢培养兴趣下定决心,然后开始找资料,找视频,查百度。等你觉得这些基础的都差不多理解了,那就别看书,将精力集中于界面开发、一定的数据库开发、通讯接口开发、协同开发与联调。然后自己设计个东西,可以涵盖他们的,做个自己想做的东西出来,虽然可能很难,但是你会在过程中学到很多,是别人教不会你的。
在学习过程中遇到什么问题,你可以百度一下看看别人的回答,看多了印象就深了,也就慢慢掌握了。遇到什么思路上的问题,可以来蓝鸥网站技术论坛发帖,论坛肯定会有人来帮忙的,就算不能完全解决,也可以提供点参考。学习要会利用资源,论坛上那么好的资源不用可惜的哦,还有资料堆的东西,只要你能掌握70%,不相信你可以试试。
苹果电脑底层也是linux,所以可以在terminal里
使用linux的串口命令对串口参数进行设置。
stty是linux下改变和打印终端设置的常用命令。
当然,我们可以利用它设置我们的串口打印操作信息。
举例:stty -F /dev/ttyS0 speed 115200 cs8 -parenb -cstopb -echo
解释:通过stty设置/dev/ttyS0串口, 波特率为115200 ,数据位cs8,奇偶校验位-parenb,停止位-cstopb,同时-echo禁止终端回显。
具体stty用法,可以在terminal里使用man stty命令看到。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流