大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
ios15.5整体是非常不错的,安全方面iOS 15.5修复了超二十多个Bug,其中多数漏洞可以通过远程触发,部分则可以通过恶意网站触发,虽然目前暂时没有人利用这些漏洞进行攻击,但未雨绸缪总比亡羊补牢更好一些。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名申请、网页空间、营销软件、网站建设、珙县网站维护、网站推广。
在性能和整体可用性的测试中,iPhone在更新后响应速度更快一些(尽管变化很小)。在基准测试中,iOS 15.5似乎与iOS 15.4.1相当。值得一提的是苹果在5月19日推送了iOS 15.6开发者预览版Beta更新,开发者需要使用Xcode 13.3.1才可以对该版本进行开发。
ios15.5的特点
iOS 15.5系统版本做到了“三优化”优化信号、优化流畅、优化续航。如果你有信号和续航困扰,非常推荐更新到ios15.5版本。信号方面iOS 15.5 系统的调制解调器固件升级到了 1.61.00,尤其是双卡信号,在iOS 15.5 系统下现在仍能保持 4G 连接并正常上网。流畅度方面,iOS 15.5 的流畅度保持的很好,对比 iOS 15.4.1有所提升。
在使用OC开发iOS程序的过程中经常会用到Protocol,定义一个Protocol的语法格式如下:
iOS中协议的概念似于java中的接口interface,就是一堆方法的声明,但没有实现。一个类可以遵循一个或多个协议,任何类只要遵循了协议就相当于拥有了这个协议中所有的方法声明。Protocol可以定义在一个类的头文件上部,并直接应用在该类中(如作为delegate功能使用时),Protocol也可单独定义到一个类中,作为多个不同类来遵循并实现的interface。
或,将HumanProtocol写成一个独立的类文件,然后导入:
NSObject是一个基协议,每个新协议都需要遵循。@protocol是定义一个协议的注解,其中,@required表示这个方法必须被实现,@optional表示这个方法不一定要被实现。
应用场景:
一个人需要一个Blog(Blog内容可以不同),这个Blog必须有通用的学习、分享等功能。则需求如下:
1、需要创建一个人和Blog;
2、需要创建一个Protocol来描述这些功能;
3、人拥有的Blog要实现这些功能;
4、Blog需要遵循这个Protocol且实现它。
协议与继承的区别 :继承之后默认就有实现,而协议只要声明没有实现;相同类型的类可以使用继承,但是不同类型的类只能使用协议;协议可以用于存储方法声明,可以将多个类中共有的方法抽取出来,以后让这些类遵守协议即可
协议与 Category 的区别 :category是针对类进行扩展,而且该类必须有里面的所有成员,协议不同可以选择性实现;category是针对一个具体的类实现,其他类没有,协议允许任何类使用并实现;Category由本身实现,不允许其他类重写,协议只定义方法,无具体实现任何类允许自己实现;category被单继承的特性所限制,协议则没有继承限制。
上面方法中用到了@synthesize sportType=_sportType,sportType 属性为 _sportType 成员变量合成访问器方法。
一个类可以遵守多个protocol,protocol又可以遵守其他protocol:
一、网络各个协议:TCP/IP、SOCKET、HTTP等
网络七层由下往上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
其中物理层、数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象;
传输层、会话层、表示层和应用层则被称作主机层,是用户所面向和关心的内容。
http协议对应于应用层
tcp协议对应于传输层
ip协议对应于网络层
三者本质上没有可比性。 何况HTTP协议是基于TCP连接的。
TCP/IP是传输层协议,主要解决数据如何在网络中传输;而HTTP是应用层协议,主要解决如何包装数据。
我 们在传输数据时,可以只使用传输层(TCP/IP),但是那样的话,由于没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用应用层 协议,应用层协议很多,有HTTP、FTP、TELNET等等,也可以自己定义应用层协议。WEB使用HTTP作传输层协议,以封装HTTP文本信息,然 后使用TCP/IP做传输层协议将它发送到网络上。Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。
二、Http和Socket连接区别
相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望通过自己的浅显理解能对初学者有所帮助。
2.1、TCP连接
要想明白Socket连接,先要明白TCP连接。手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。
建立起一个TCP连接需要经过“三次握手”:
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
握
手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连
接之前,TCP
连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”(过程就不细写了,就是服务器和客
户端交互,最终确定断开)
2.2、HTTP连接
HTTP协议即超文本传送协议(HypertextTransfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。
HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
1)在HTTP 1.0中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接。
2)在HTTP 1.1中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。
由
于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。通常的
做法是即时不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客
户端“在线”。若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。
三、SOCKET原理
3.1、套接字(socket)概念
套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。
应
用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个
TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Socket)接口。应
用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
3.2 、建立socket连接
建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket,另一个运行于服务器端,称为ServerSocket。
套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。
服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。
客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
连
接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户
端,一旦客户端确认了此描述,双方就正式建立连接。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
3.3、SOCKET连接与TCP连接
创建Socket连接时,可以指定使用的传输层协议,Socket可以支持不同的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接。
3.4、Socket连接与HTTP连接
由
于通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。但在实际网络应用
中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致
Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。
而HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。
很
多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步。此时若双方建立的是Socket连接,服务器就可以直接将数据传送给
客户端;若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可以
保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。
这里我们使用Socket实现一个聊天室的功能,关于服务器这里的就不介绍了
@interfaceViewController (){
NSInputStream *_inputStream;//对应输入流
NSOutputStream *_outputStream;//对应输出流
}
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *inputViewConstraint;
@property (weak, nonatomic) IBOutlet UITableView *tableView;
@property (nonatomic, strong) NSMutableArray *chatMsgs;//聊天消息数组
@end
懒加载这个消息数组
//从主运行循环移除
//1.建立连接
//定义C语言输入输出流
//把C语言的输入输出流转化成OC对象
//设置代理
//把输入输入流添加到主运行循环
//不添加主运行循环 代理有可能不工作
//打开输入输出流
//登录
//发送用户名和密码
//在这里做的时候,只发用户名,密码就不用发送
//如果要登录,发送的数据格式为 "iam:zhangsan";
//如果要发送聊天消息,数据格式为 "msg:did you have dinner";
//登录的指令11NSString *loginStr =@"iam:zhangsan";
//把Str转成NSData
//建立一个缓冲区 可以放1024个字节
//返回实际装的字节数
//把字节数组转化成字符串
//从服务器接收到的数据
//聊天信息
//刷新表格
//发送数据
//发送完数据,清空textField
//数据多,应该往上滚动
}
//监听键盘
//获取窗口的高度
//键盘结束的Frm
//获取键盘结束的y值
任何吸引人的游戏都少不了声音。iOS开发者在游戏中需要使用声音时有多种选择,取决于对游戏中音频的控制需求,可以选择简单的内置服务,也可以选择更高级的API(比如OpenAL)。
通过音频API,可以实现流式音频,播放简短音效,甚至模拟3d空间的音频。有些游戏可以通过音轨让玩家沉浸在特定的心境中玩游戏,设置鼓励用户使用耳机来获得更完美的体验。
本系列文章中,会陆续整理近几年来在工作中涉及到的音频的相关知识,以算做对自己知识体系的一次梳理吧,大体包括Core Audio、OpenAL 以及Cocos2d引擎中的音效部分等三个方面。
• Core Audio 是什么?
• Core Audio 中提供的音频服务
• Core Audio 中的有关音频框架
• 有关 Core Audio 的变化及更新
Core Audio 是什么?
Core Audio 是iOS和 MAC 的关于数字音频处理的基础,它提供应用程序用来处理音频的一组软件框架,所有关于IOS音频开发的接口都是由Core Audio来提供或者经过它提供的接口来进行封装的,按照官方的说法是集播放、音频处理、录制为一体的专业技术,通过它我们的程序可以同时录制,播放一个或者多个音频流,自动适应耳机,蓝牙耳机等硬件,响应各种电话中断,静音,震动等,甚至提供3D效果的音乐播放。
相关链接:
Core Audio Overview
Audio Video Starting Point
Core Audio Glossary
Core Audio中提供的音频服务
Core Audio 本身是一个很庞大的话题,涉及到多个领域中的不同服务,为了更方便的使用Core Audio,通常可以将其分割为更小的模块。图一展示了根据应用程序服务层分解的示意图。构建在应用程序栈最下面的是底层硬件。接下来往上是驱动程序层。构建在驱动层之上的每一层都是苹果提供给开发人员的应用层服务,包括各类音频API和框架。
主要的几类服务:
Audio Unit
Audio Unit 是Core Audio 在应用层中最底层的服务。在使用其他音频API时,最终在底层都会调用到Audio Unit。在所有的API中,Audio Unit 是延迟最短且最灵活的,但代价就是它的使用相当的复杂,幸运的是在实际使用中,我们很少直接使用Audio Unit。
相关链接:
Audio Unit Framework Reference
相关项目工程:
Core Audio Utility Classes
Audio File Service
通过Audio File Service 提供的API可以打开并读取或者写入磁盘上存储的文件。
Audio File Stream Service
它是对Audio File Service 的扩展补充。Audio File Service 对存储到磁盘上的音频文件进行操作,而Audio File Stream Service
并不一定关联到某个文件上,它更适合基于网络的音频应用程序。
Audio Conversion Service
通过它可以将数据转换为PCM格式或者从PCM格式转换成数据。
Extended Audio File Service
可以将它理解为Audio File Service 和 Audio File Service 的组合。通过这种API 可以直接加在并转换音频文件。
Audio Session Service
和Core Audio中的其他API不同,它的主要用于 iOS 系统中协调应用程序之间的音频播放的 API 的。例如,当有电话打进来时,音频的播放就会被暂停;在用户启动电影时,音乐的播放就会停止。我们需要使用这些 API 来确保一个应用程序能够正确响应并处理这类事件。
System Sound Service
它是一种允许播放短音效和警告的基本服务,还具有提供振动功能的独特能力,Core Audio中的其他任何服务都不能访问振动系统。
Audio Queue Service
它可以对播放音频进行精细的控制,比如暂停、继续、循环播放和音频同步等,因此特别适合于播放和录制持续时间很长的音频。在游戏中进行语音叙述等情景时,需要音乐或者长时间的播放文件,便会需要它。
AVFoundation
它是Core Audio中唯一基于Objective-C的框架。这个框架提供了AVAudioPlayer类用于播放,AVAudioReconder类用于录音,以及AVAudioSession类用于设置音频回话。和其他高层API一样,我们需要在易用性和功能之间做出权衡。如果在此框架中找不到我们需要的特性或者功能,那么就必须深入底层服务并直接使用底层的API。
相关链接:
AV Foundation Framework Reference
AV Foundation Programming Guide
Audio Session Programming Guide
相关的项目工程:
AVCaptureAudioDataOutput To AudioUnit iOS
OpenAL
和其他专用API不同,OpenAL是一个狂平台的用于播放和捕捉音频的工业标准。OpenAL更适合播放空间音频(spatialized sound)或者定位音频(positional sound)。可以将空间音频理解成3D空间中的声音,通过OpanAL可以对音效添加一些效果,比如位置属性,这样会使远程的声音比近处的声音听起来要弱一些。
相关链接:
OpenAL FAQ for iPhone OS
相关的项目工程:
oalTouch
Core Audio中的有关音频框架
Core Audio 中的服务和框架并没有一对一的对应关系,应用层的服务实际上分为5个不同的框架:Core Audio、Audio Toolbox、Audio Unit、AVFoundtaion、OpenAL。图二中很好的展示了这些框架和服务之间的映射关系。
Audio Unit、AVFoundation和OpenAL的框架非常明了,和他们同名的服务直接对应,其中AVFoundtion有三个Objective-C类组成:AVAudioPlayer、AVAudioRecorder和AVAudioSession。
Audio Toolbox 框架提供了前面列出的其他剩下的应用层服务,包括非常重要的Audio Session Service。
相关链接:
Audio Toolbox Framework Reference
其他相关框架:
Media Player Framework
它是一个用于音频和视频播放的高层级接口,它包含了一个可以在应用中直接使用的默认的用户界面,可以使用它来播放用户在 iPod 库中的项目,或者播放本地文件以及网络流。另外,这个框架也包括了查找用户媒体库中内容的 API,同时还可以配置像是在锁屏界面或者控制中心里的音频控件。
相关链接:
Media Player Framework Reference
Core MIDI Framework
提供与MIDI设备通讯的标准方式,包括硬件键盘和合成器。可以使用这个框架来发送和接收MIDI消息以及与通过dock连接器或网络连接到iOS设备的MIDI外设交互。
相关链接:
Core MIDI Framework Reference
OS 4.0以后的功能变化如下:
iOS 7.1
Support for External Media Players (CarPlay相关的)
iOS 7.0
新增 Inter-App Audio和 AudioCopy
强化 Media Player / AV Foundation Framework
弃用 Audio Toolbox framework内的Audio Session API
iOS 6.0
新增 Audio UnitのComponent
强化 Media Player / Core Media / AV Foundation Framework
iOS 5.0
新增 Audio UnitのComponent
强化 Media Player / AV Foundation / AudioToolbox Frameworks
iOS 4.3
强化 AV Foundation
强化 Media Player / Audio Unit / Audio Toolbox Frameworks
iOS 4.2
新增 Core MIDI framework
强化 Media Player Framework
新增 AirPlay
iOS 4.1
强化 AV Foundation
iOS 4.0
新增 Core Media Framework
强化 AV Foundation
相关链接:What's New in iOS
篇一:分享简单学习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%,不相信你可以试试。