ios开发项目技术文档

2025-04-14 版权声明 我要投稿

ios开发项目技术文档(精选10篇)

ios开发项目技术文档 篇1

2.之前做wpf,使用过mvvm模式,可以把业务逻辑放到vm模式,vm可以来处理业务逻辑。做过几个ios项目,也想过mvvm模式,但是一直没找到。偶尔看到网上有一个mvvm模式的ios项目,我来尝试从头开始做这个项目,做完之后源码会公开。

3.ok,这个mvvm开源的项目是C-41,有兴趣的可以去网上搜搜。

4.这个项目要关联到一些类库,ios有一个cocopods项目管理工具,可以自己配置,我已经配置好了。

5.新建一个项目,在项目目录下做一个Podfile,里边输入

target “MyTools” do

pod ‘ReactiveCocoa‘,‘2.1.8‘

pod ‘libextobjc‘,‘0.3‘

pod ‘ReactiveViewModel‘,‘0.1.1‘

pod ‘UIColor-Utilities‘,‘1.0.1‘

inhibit_all_warnings!

end

target “MyToolsTests”do

pod ‘Specta‘, ‘~>0.2.1‘

pod ‘Expecta‘, ‘~>0.2.3‘

pod ‘OCMock‘, ‘~>2.2.1‘

inhibit_all_warnings!

end

6.执行pod install,会自动下载并加入项目里边,

7.项目运行的时候,会报一个错误,XCTest/XCTest.h file not found built in Xcode 6

8. 遇到这个错误,大家可以去网上查,我在stackoverflow找到了合适的答案,吐槽下,在国内上这个网站,有时候很慢,建议大家去弄b一个****的软件,我现在用的是云梯,配置起来超简单。

9.In order to fix this for any CocoaPod dependencies you need to add the following toFRAMEWORK_SEARCH_PATHSin any Pod target that requires XCTest (e.g. Kiwi, Specta, FBSnapshotTestCase, etc).

$(PLATFORM_DIR)/Developer/Library/Frameworks

10.大意就是,在报错误的类库中,需要添加$(PLATFORM_DIR)/Developer/Library/Frameworks这个东东。这个是加在BuildSettings->Search Paths->Framework Search Paths里边添加。

ios开发项目技术文档 篇2

指纹[1]是每个人所具有的生理特征,并且每个人的指纹都是独一无二的,每个人的指纹在图案、断点和交叉点上各不相同,它也不会随着年龄的变化而发生变化。正因为指纹所具备的独特的特征,被广泛用作个人的身份识别。

指纹识别技术[2]是利用人类指纹的唯一性,通过对指纹图案的采样、特征信息提取并与库存样本相比较的过程来实现身份识别的技术。与帐号加密码、充值IC卡等传统的身份识别手段相比,指纹识别技术具有不会丢失、不会遗忘、唯一性、不变性、防伪性能好和使用方便等优点,目前应用在侦讯、门禁、电脑、手机、考勤、支付等领域。

随着智能手机的普及和移动互联网的发展,人们日常工作生活中越来越多的事务通过手机来完成。越来越多的应用要求用户通过输入密码来登录,密码难以记忆,输入起来麻烦,使用起来极为不便。如果能利用指纹识别技术来实现各种App的登陆将极大的方便用户,为用户提供更好的体验。本文将介绍IOS开发中,如果使用苹果touch ID实现指纹登陆。

2苹果指纹识别技术介绍

2.1苹果指纹识别技术原理

2013年苹果公司在iphone5s上首次使用指纹识别功能实现手机的解锁。在手机的Home键内植入指纹识别芯片,利用射频传感器直接读取真皮层的指纹,生成精准的指纹图像。通常得到的指纹图像是灰度图。为了提取指纹特征,首先将灰度图转化成计算机能处理的二进制图像。Touch ID芯片会根据3种基本指纹类型(弧形纹、箕形纹或斗形纹)将指纹分类,提取指纹纹路中的特征点,包括纹路的起点、终点、分叉点和毛孔的位置等。然后将该手指的特征点数据加密之后保存为数学表达式。通过指纹识别进行身份验证的过程就是再次执行以上过程,然后将获得的指纹与已经注册的指纹数据进行比对,如果匹配则指纹解锁成功[9,10,11,12,13]。

从以上描述可以看出苹果的指纹识别技术有以下几个特点:第一、基于第三代生物射频指纹识别技术(射频原理真皮指纹核心技术(线型采集器)),通过传感器发射出微量射频信号,穿透手指的表皮层去控测里层的纹路,以便获得较精准的指纹图像。而且获取的是真皮层的指纹特征,防伪指纹能力增强。第二、保存的并非指纹本身,而是指纹的特征数据,并且经过加密处理。第三、指纹数据保存在本地,而非云端,并且目前是不可以获取指纹数据的。以上三点从一定程度上保证了指纹识别的安全性。

2.2 Touch ID在App开发中的应用

2.2.1指纹识别的应用

Iphone5s添加指纹识别后,仅仅将指纹识别用于手机的解锁。i OS 8发布以后,在其SDK开放了Touch ID的接口。该接口提供的函数主要实现两个功能,判断当前设备是否支持指纹识别功能和指纹验证。前面已经介绍,苹果指纹识别并不会保存指纹到云端,也不提供获取指纹的功能,因此其指纹识别仅针对当前使用设备,并且不能存储指纹,只能对当前设备的指纹识别进行验证。根据苹果官方的介绍Touch ID目前主要应用在两个方面:用于Key Chain加密和用于授权。

根据苹果指纹识别的原理,目前指纹识别技术在IOS开发中的应用主要是指纹识别登录App。App登录后,一段时间不用或者其它原因使其进入后台运行,当用户重新将App唤醒至前台时,一般要求输入密码,这个时候可以利用指纹识别来代替密码输入,为用户提供便利,省去输入密码的繁琐,也减少密码被盗的风险。

2.2.2 Touch ID接口介绍[4,5]

IOS8以后,苹果对开发者开放了Touch ID接口,可以通过Touch ID进行身份认证,下面接口简单介绍。

Touch ID用于身份认证的所有的接口都在Local Authentication框架中,该框架包含了三个头文件:LAContext.h,LAError.h,LAPublic Defines.h。LAContext.h用来评估认证策略,允许应用程序要求用户使用个人信息,如注册信息或Touch ID的个人信息来验证自己的身份。LAError.h中定义了一些错误信息代码。实际用到的函数有两个,如下所示。

上述两个函数都是LAContext的成员函数。目前LAPolicy有两个值:LAPolicy Device Owner Authentication With Biometrics和LAPolicy Device Owner A-uthentication。第一个值表示设备必须使用touch ID认证识别,如果设备不支持或者没有设置指纹,则不能通过认证;第二个值表示设备可以通过touch ID和密码来认证识别,当不能使用指纹识别时则使用密码。

如果can Evaluate Policy函数返回值为YES,表示设备支持指纹识别,那么可以调用evaluate Policy:函数进行指纹识别了。调用evaluate Policy函数后会弹出一个alert。该alert可定制的只有两处:localized Reason参数指定提示框的提示信息,用来向用户说明使用Touch ID的目的;LAContext的localized Fallback Title属性用来设置密码输入框的形式,如果不设置的话,默认提示是“Enter Password”。如果该属性设置为空,该按钮会被隐藏。

弹出Alert后有三种方式退出验证(alert会被dismiss,reply回调会被调用):用户指纹通过验证;用户点击“Enter Password”按钮,通过输入密码验证;用户点击“Cancel”按钮,取消指纹验证。

在指纹验证过程中,如果用户输入了错误的指纹,这种情况下,提示框控件不会被dismiss,其标题会由项目名称变为为“Try Again”,并有弹簧状的动画效果过渡。如果连续三次验证错误,则取消指纹验证。

3指纹识别的应用实践

前面已经提到目前指纹识别在ios开发中的应用主要是指纹识别登录App,下面将就其如何实现提出一种思路并详细进行阐述。

3.1指纹验证综述

在使用各种App的时候,用户一方面希望能保证安全,避免信息被盗,保护自己的隐私,另一方面又希望用起来方便。有些App每天被反复登录使用,但用户又不想反复的去输入密码,同时还要保证别人不能随意看到自己的信息。这个时候就可以使用指纹验证功能来达到该目的。目前有越来越多的应用使用了指纹验证功能来实现应用从后台到前台的用户验证,如qq,支付宝等。

要实现指纹验证功能,主要分两个步骤,第一步验证并开启设备的指纹识别功能;第二步从后台到前台的指纹验证。

3.2验证并开启设备的指纹识别功能

3.2.1实现逻辑

在App开发中实现开启指纹验证功能,只是一种模拟效果,因为真正开启该功能只能在设备的系统设置中。如图1所示,可以利用UISwitch控件模拟一种开启指纹解锁的效果,当点击开关处于开启状态时,弹出如图所示的指纹验证窗口,通过触摸Home键通过指纹验证,表示App支持指纹识别。保存开关控件的状态,同时设置一个Bool变量来保存是否支持指纹识别的状态。如果switch处于开的状态,则将这两个Bool变量都保存为YES,否则都为NO,表示不支持指纹识别,同时Switch处于关闭状态。这个设置,一般在用户登录App后,在App的安全设置中。

3.2.2关键代码

touch ID接口主要提供了两个函数用于指纹识别,在开启指纹识别时(点击switch开关),会调用这两个函数来实现指纹识别。首先要判断设备是否支持指纹识别功能,下面列出主要代码。[4]

上述代码中,如果验证成功,一般通过主线程来处理相关操作。如果验证失败,则根据LAError.h文件中的错误代码来做相应的处理,如LAError Authentication Failed表示因为用户提供了错误的指纹没有验证成功。

3.3指纹验证

App从后台进入前台,必须通过指纹验证才能重新进入,这样可以确保应用在使用后没有即时退出造成的风险。要达到这个目的,有两个前提条件。第一是当前App是开启了指纹识别;第二是App已经登录了,并处于有效使用时间内。如果开启了指纹识别,同时App处于登录有效时间内,那么App从后台进入前台时,则进入如图3所示界面,通过指纹识别来重新进入App。在图3界面点击指纹图标,进入图4所示界面,然后通过指纹识别解锁。指纹识别解锁过程和前述的开启指纹识别过程类似。也是分为两步,第一步,设备是否支持指纹识别;第二步,如果支持指纹则通过指纹验证。代码实现过程也基本相同,不同的是本次指纹验证成功后进入App进入后台前的相应界面。

需要进一步说明的是App如何来判断是否已经登录,并处于有效使用时间内。这个问题可以通过token机制来处理。token值称为登录令牌,用来判断当前用户的登录状态,是服务器根据用户的信息(账号/密码/身份认证机制等)来生成的用于标识用户身份的值。当用户首次登录成功之后,服务器端就会生成一个token值,并将其保存在服务器的数据库中,同时将token值返回给客户端。客户端可以将其保存在沙盒中,作为一个公共参数。客户端再次发送网络请求(不一定是登录请求)时,就会将这个token值附带到参数中发送给服务器,服务器接收到客户端的请求之后,会取出token值与保存在数据库中的token值做对比,如果两个token值相同则说明用户登录过并且当前用户处于登录状态。如果没有这个token值,表示没有登录成功。如果客户端的token值和数据库中保存的不一致,这说明原来的登录信息已失效,也就是用户的token值已超出有效时间。token不仅有有效时间,而且只要调用登录接口并且登录成功,都会在服务器生成新的token值,原来的token值就会失效[6,7]。

4指纹识别验证方法改进

前面提到的指纹验证过程是App登录后,通过token判断App是否在有效使用时间内,为其加的指纹锁,实际上App已经登录,所以并非真正通过指纹验证来登录。也可以将指纹识别集成在App中,实现指纹识别登录App功能。下面将介绍在App中如何集成指纹识别实现指纹登录。

4.1设计思路

i Phone指纹的存储和验证都是通过Home键来完成的,App开发者并不能获取用户的指纹和识别用户的指纹。因此实现指纹登录实际上还是针对特定设备,也就是在用帐号密码登录App时,先要将其与设备绑定。不管是开启指纹识别还是指纹登录都是针对当前使用设备,在设计中考虑和设备进行关联。

4.1.1开启指纹识别

开启指纹识别的设计思路和前述方法一致,将switch开关前的标签改成开启指纹登录。然后在指纹识别验证通过后,将App登录帐号密码和设备关联绑定,过程如下。Touch ID验证通过后,根据当前已登录的账号和硬件设备Token,生成设备账号和密码。设备的帐号和密码生成规则可以通过不同方式,因用户不需要直接使用此处密码,密码可以尽可能的长和复杂。将设备帐号密码保存在keychain,以便进行指纹登录时读取[8]。

设备帐号和密码只是用于指纹登录时读取,与服务器数据库保存的数据进行比较,用户不会直接接触和使用该账户密码,所以可以设置复杂的规则。比如说账号可以用硬件token或者原账号加密处理后的字符串,密码用App密码进行md5加密再和设备token进行某种运算等。

生成设备账号、密码后,将原账号及设备账号、密码,加密后发送到服务端进行绑定。最后服务器端验证原账号及设备账号有效后,返回相应状态,绑定成功则完成整个Touch ID(设备)绑定流程,App开始指纹识别成功。

4.1.2指纹登录

App开启了指纹识别登录后,当用户账号退出后,可以使用指纹登录。在登录按钮下面会添加一个“指纹登录”按钮(如图5所示)。若当前设备未绑定,则不会出现“指纹登录”按钮。

单击登录界面的“指纹登录”按钮,调用Touch Id接口检测当前设备是否支持Touch ID,如果支持则发起Touch ID验证(如图6所示)。指纹验证通过,说明是机主本人。读取App存储在keychain中的设备账号、密码,调用设备登录接口,发起登录请求。服务器端验证设备账号、密码后,返回相应状态,通过验证则登录成功,完成整个Touch ID登录流程。

4.2 keychain保存用户名、密码

指纹登录其实最终还是通过账号和密码登录来实现,指纹通过验证后,App在后台调用登录接口,自动获取keychain保存的账号密码登录。下面将介绍keychain保存和获取账号和密码的方法。

keychain是IOS为开发者提供的一种安全的保存私密信息(密码,序列号,证书等)的方式,每个IOS程序都有一个独立的keychain存储。keychain是通过加密存储的,相对于NSUser Defaults、文件保存等方式,keychain保存更为安全。因此使用keychain来保存登录账号密码是一种较好的方式[4]。

在应用里要使用key Chain,首先需要导入Security.framework,keychain的操作接口声明在头文件Sec Item.h里。可以直接使用Sec Item.h里方法操作keychain,也可以使用apple官方的两个工具类:Keychain Item Wrapper和SFHFKeychain Utils。下面将列出使用Keychain Item Wrapper类实现的主要代码。

从keychain中获取到账号、密码后,就可调用登录接口,实现App登录。

5结束语

ios开发项目技术文档 篇3

触控科技起家于iOS开发者社区——CocoaChina,这个社区从2010年开始聚集了国内一大批开发iOS应用的兴趣爱好者,这里进行的信息交流和资源共享帮助他们碰撞出很多成功的作品,触控科技后来研发的《捕鱼达人》和《魔法学院》等知名游戏中很多开发者都是从这个社区中混迹出来的。但是今年,《捕鱼达人》这样曾经在全球20多个国家畅销的游戏,在iOS的后续版本收入上不断下滑,陈昊芝说,苹果仍然是最好的做工品牌,但从手机的增量表来看,苹果增量几乎滑落到摩托罗拉等手机的水平,不再是将来可以预期的最大市场了。他补充道:“苹果的审核周期、审核质量、审核流程都出现了非常多、非常严重的问题。以前,给苹果提供应用时,大家忐忑的是自己做的不够好;今天给苹果提供应用,我们忐忑的是苹果会不会‘抽风’。”

因此,去年陈昊芝就采用了一系列策略将重点转向Android。2012年年初,他投资开源游戏引擎Cocos2D-X,可以自动把iOS版本的游戏应用程序转换成合适的比例,直接用于Android版本;他还在Android各市场加大推广力度,他说自己在admob上面一掷千金,做了两天的包场宣传,效果十分好;他还在加强多种渠道的合作拓展,比如与应用市场、手机装机市场、运营商合作,比如《捕鱼达人2》在奇虎360手机应用商店上线,一个月内下载安装300万次,并带来400万元收入,两个月的收入达到为1500万元,而《捕鱼达人2》来自运营商的收入增长迅速,已经占到总收入的90%以上。

对于陈昊芝来说,移动游戏的最佳运营策略是在iOS上做出知名度,再进入Android市场赚钱。现在,包括触控科技的《捕鱼达人2》在内,国内的世界Online、忘仙、QQ御剑等几款游戏都已经确认在Android市场达到或者超过千万级收入,他乐观地预计,今年移动游戏收入50%来自Android。

其实,像陈昊芝这样敏锐的开发者已很多——从苹果如日中天时全面投身iOS,在Android崛起后又转移战略重点,而且随着2013年Android市场的进一步增强,也许越来越多的果粉和开发者将会同意他的观点。Android将会全面超越iOS吗?

开发者转舵

好豆网首席品牌官齐鲁在2012年得到了一份满意的成绩单,专注于美食分享的好豆网移动应用下载量突破了600万,在业界打响了知名度。但其中绝大部分用户来自于Android系统,“Android和iOS的下载比例大概是2比1的样子”,齐鲁说,而今年公司团队放在Android市场的精力确实要多一些。

目前,除了游戏以外的大部分国内移动应用是不赚钱的,因此像好豆网这样的生活类应用的首要目标就是要获得更好的用户下载量和口碑,再靠广告和线下活动等方式来盈利。Android平台显然用户基数最大。根据最近IDC发布的报告,去年Android已经占据全球智能手机75%的份额,第三季度的手机出货量首次突破1亿部大关;而根据美国Business Insider Intelligence的最新调查,中国90%的智能手机来自Android系统,而且是新用户的主要来源,这些都促使应用开发者不再把iOS作为投入的首选平台。

“iOS的推广渠道少,排榜机制是考虑综合因素,所以开发者经常会感到有心无力。”齐鲁说,即使好豆网曾被评为iOS分类榜上的“年度最佳应用”,他也没总结出能快速提高下载的方法,通常的策略是迭代快、活动多或者获得行业排榜名次和推荐。相反,Android市场就相对简单,虽然国内Android市场平台多,在这些平台上面首发也要很多人力去对接,但是与这些平台的合作却相对简单,可以通过投放广告和推荐位置等各种方式提高排名,所以受到有实力的开发者偏爱。

比如,盘古搜索就投入60%以上的研发力量在Android系统开发的客户端开发工作中。盘古搜索CEO王宏宇对记者表示,由于目前搜索市场竞争非常激烈,盘古搜索采取差异化竞争策略就是走移动搜索路线,而且要针对不同人群开发特色鲜明的手机客户端,比如年轻人群的“时尚版”以及信息人群的“大众版”,这些客户端主要下载都来自Android平台。因此,盘古搜索在国内数十家知名应用市场上做推广,虽然很多是非官方出口,但是下载量却能够稳步上升,她表示今年会考虑加大营销投入,联合几个大应用市场举办大型推广活动。

与此同时,开发者对Android很难赚到钱的印象也在改变。在去年之前,大量开发者都认为开发Android版本吃力不讨好:一方面,不同品牌型号的终端硬件增加了开发者的研发成本;另一方面,Android用户比较偏技术人群和低消费人群,远不如苹果的小资人群有消费能力。但是现在Android平台中以三星为首的高端机型以及使用千元手机的学生、白领甚至农民工都显示出其价值。

“Android用户应该更容易付费”,爱奇艺副总裁杨向华说,因为使用千元手机的用户中主要是年龄低、学历低、收入低的“三低”人群。在负责爱奇艺移动端之前,杨向华曾经负责网站的付费用户服务,他认为这些用户接触互联网的第一渠道是手机而不是PC,他们更容易使用手机消费游戏、音乐和视频等娱乐内容,付费需求也更强。不过,在Android平台上开发视频应用显然更麻烦,由于设备机型不一样,分辨率也不同,杨向华和他的团队在Android播放器研发上就花了很多精力反复调整,他甚至要考虑如何让千元机播视频“不卡”,因此Android终端版本一再推延,就是因为好的播放体验相当难为。但是,Android的前景却让他甘之若饴地投入更多的资源,2012年奇艺移动客户端的播放量已经达到了整个网站播放量的20%,他期待今年Android手机的增长把移动视频播放推向更高的份额。

91无线的CEO胡泽民也给出了这样的数据:2010年Android玩家的付费能力只有苹果玩家的1/5,但是在过去了两年里,付费能力提高了3倍,如今在某些游戏里面与苹果用户比例差不多了。他表示,91与Android官方应用市场互相拜访希望能够在中国建立更完整的生态链,目前Android手机在91的下载量已经接近2/3,而且每季度有上万的Android开发者涌入,这都预示着Android在开发者心中开始“主流”起来。

一统江湖的变数

事实上,Android在推出5年之后已经风光无限,谷歌应用商店Google Play获得了惊人的增长,而且谷歌应用商店盈利增速超过了苹果。现在,谷歌和苹果的应用商店已经在应用程序数量上势均力敌,而且谷歌应用商店每日营收增长也超过了苹果App store。根据手机应用调查公司Distimo的2012年年度报告,谷歌应用商店在全球20个最大国家和地区开放,每日营收同比增长了43%,而苹果同期增长率为21%,这还包括其他非官方渠道的下载收入。

但是,Android风光能否持续还存在变数。在Android联盟内,最大的问题是各终端厂商都根据自己的需要推动Android的发展,而不是谷歌或其他多数厂商的利益。从一开始谷歌与三星、索尼、沃达丰等11家合作伙伴约定每18个月更新一次Android系统,就没有办法完全实现。从2011年底开始,Android手机升级就变得困难重重,以至于每隔几个月Android就会碎片化一次,比如三星对Galaxy S手机的Android 4.0升级就曾提出特例,因为这款手机的硬件配置无法负担升级后的操作系统和三星定制化的TouchWiz用户界面。有调查数据表明,明年Android系统将升级至5.0版本,而目前使用2010年Android 2.33之前版本的用户仍然超过50%。与苹果相比,Android在统一硬件和的生态链上面都更薄弱。

在用户更忠诚于手机品牌而不是Android系统的情况下,尤其在中国等地区,手机硬件厂商的策略将会影响Android的市场份额。比如,三星继自主研发Bada操作系统之后又一次启动了智能手机操作系统战略,将联合包括英特尔、Docomo等在内的多家公司共同开发一款新的智能手机操作系统“Tizen”,并将于2013年在多个国家推出基于该操作系统的智能手机。参与开发Tizen系统的还包括松下、NEC、英国沃达丰、法国电信以及欧洲其他几家移动运营商。另外,最近中兴美国公司CEO程立新表示,今年中兴将与欧洲无线运营商合作推出基于Mozilla火狐系统的智能手机,该操作系统是德国电信、sprint Nextel以及西班牙电信开发的基于Mozilla技术的开放操作系统,这一操作系统就是为了抗衡谷歌Android而推出的。

在主流终端厂商减少对Android依赖的同时,千元智能手机市场也在受到众多操作系统的包抄。今年年初促进开源软件项目的Canonical公司宣布,今年年底基于Ubuntu开源操作系统的手机将有望上市。作为开源的操作系统,Canonical在视频中描述了一个自由定制、更新快速、新鲜好玩、界面华丽的系统,该系统还同时支持移动和桌面两个系统,系统采用全手势操作,Ubuntu移动系统支持HTML5网页程序以及云同步服务,用户可以在多台设备之间共享文件,这些富有想象力的设计受到极客们的欢迎。此外,阿里巴巴主导的阿里云操作系统也表示在2013年推出20款以上的手机终端,而且该系统很可能获得目前增长最快的联想、华为、步步高、小米、酷派等手机的支持。

不仅如此,Android薄弱的生态链也是一个值得关注的变量。比如,苹果已经给开发者开出了更高的价码。从去年下半年开始,苹果开始向开发者支付更多的分成,到去年底,苹果应用下载次数已突破400亿次,并且已经向开者支付超过70亿美元,苹果下载增长只有60%,但是开发者的收入增长却达到了75%,这无疑会刺激更多的开发者投入iOS平台。

从开发者的角度,他们愿意尝试一切带来推广渠道和资源的操作系统。齐鲁就表示,早期微软官方邀请好豆网去微软进行Windows8系统培训,并提供给开发者很多格式化的软件和推荐位置,好豆网积极参与也获得不少于十万级的下载。如果三星和其他系统发出邀请,他们也会考虑开发相关版本的应用,因为一个成熟的开发团队快速跟进并不是难题。而陈昊芝现在最关注的是,2013年,Android市场一定会进入大型游戏公司移植产品、海外成功产品国内本地化发行、国内移动游戏团队成功产品版本升级或者持续迭代的阶段,留给独立开发者和团队的空间与时间越来越少了。

ios开发项目技术文档 篇4

NSNumber

//简化前的写法:

NSNumber *value1;

value1 = [NSNumber numberWithInt:12345];

value1 = [NSNumber numberWithFloat:123.45f];

value1 = [NSNumber numberWithDouble:123.45];

value1 = [NSNumber numberWithBool:YES];

//简化后的写法:

NSNumber *value2;

value2 = @12345;

value2 = @123.45f;

value2 = @123.45;

value2 = @YES;

//装箱表达式也可以采用类似的写法:

NSNumber *piOverSixteen1 = [NSNumber numberWithDouble: ( M_PI / 16 )];

NSString *path1 = [NSString stringWithUTF8String: getenv(”PATH“)];

//可以分别简写为:

NSNumber *piOverSixteen2 = @( M_PI / 16 );

NSString *path2= @( getenv(”PATH“) );

//对于字符串表达式来说,需要注意的是表达式的值一定不能是NULL,否则会抛出异常,

NSArray

//对于NSArray的初始化来说,有非常多的写法,这里就不再一一罗列,我们直接看新的写法

NSArray *array;

array = @[]; //空数组

array = @[ a ]; //一个对象的数组

array = @[ a, b, c ]; //多个对象的数组

//编译器在处理时:

array = @[ a, b, c ];

//编译器生成的代码:

id objects[] = { a, b, c };

NSUInteger count = sizeof(objects)/ sizeof(id);

array = [NSArray arrayWithObjects:objects count:count];

//注意,如果a,b,c对象有nil的话,运行时会抛出异常,这点和原来的处理方式不同,编码的时候要多加小心,

NSDictionary

//同样,对于字典这个数据结构来说,有很多种初始化的方式,我们来看新的写法:

NSDictionary *dict;

dict = @{}; //空字典

dict = @{@”key1“:@”value1“ }; //包含一个键值对的字典

dict = @{ @”key1“ : @”value1“, @”key2“ : @”value“, @”key3“ : @”value3“ }; //包含多个键值对的字典

//采用上述写法构建的容器都是不可变的,如果需要生成可变容器,可以传递-mutableCopy消息。例如

NSMutableArray *mutablePlanets = [@[

@”Mercury“, @”Venus“, @”Earth“,

@”Mars“, @”Jupiter“, @”Saturn“,

@”Uranus“, @”Neptune“

] mutableCopy];

IOS开发之NSURL 篇5

NSURL*url=[NSURLURLWithString:@www.2cto.comid=1];

2:解决NSURL初始化失败的相关解决方案.

将传进来的NSString 进行 UTF8 转码即可.

1:针对 URLWithString 初始化失败的解决方案

NSString*strLocalHtml=@file:///Users/amarishuyi/Desktop/MyIPhoneLife/WebDeveloper/WebPlug-in/ExtEditor/DataPage/KMQT/Ext-HTMLEditor.html;

strLocalHtml=[NSStringstringWithFormat:@%@?Value=%@,strLocalHtml,self.txtUrl.text];

strLocalHtml=[strLocalHtmlstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSURL*url=[NSURLURLWithString:strLocalHtml];

2:针对 fileURLWithPath 初始化失败的解决方案

self.filePathString=[self.filePathStringstringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSURL*url=[NSURLfileURLWithPath:self.filePathString];

转码成功后 会自动 在字符串左侧添加file:///

3:NSURL 成功初始化后可以获取的参数 (摘自:NSURL 学习)

NSURL*url=[NSURLURLWithString:@www.2cto.com?tn=baiduhome_pg&bs=NSRUL&f=8&rsv_bp=1&rsv_spt=1&wd=NSurl&inputT=2709];

NSLog(@Scheme:%@,[urlscheme]);

NSLog(@Host:%@,[urlhost]);

NSLog(@Port:%@,[urlport]);

NSLog(@Path:%@,[urlpath]);

NSLog(@Relativepath:%@,[urlrelativePath]);

NSLog(@Pathcomponentsasarray:%@,[urlpathComponents]);

NSLog(@Parameterstring:%@,[urlparameterString]);

NSLog(@Query:%@,[urlquery]);

NSLog(@Fragment:%@,[urlfragment]);

NSLog(@User:%@,[urluser]);

NSLog(@Password:%@,[urlpassword]);

结果如下:

-03-3118:22:20.904SmallDemoList[5473:11603]12131232

2012-03-3118:22:20.907SmallDemoList[5473:11603]Scheme:http

2012-03-3118:22:20.907SmallDemoList[5473:11603]Host:www.baidu.com

2012-03-3118:22:20.907SmallDemoList[5473:11603]Port:(null)

2012-03-3118:22:20.907SmallDemoList[5473:11603]Path:/s

2012-03-3118:22:20.907SmallDemoList[5473:11603]Relativepath:/s

2012-03-3118:22:20.907SmallDemoList[5473:11603]Pathcomponentsasarray:(

/,

s

)

2012-03-3118:22:20.916SmallDemoList[5473:11603]Parameterstring:(null)

2012-03-3118:22:20.917SmallDemoList[5473:11603]Query:tn=baiduhome_pg&bs=NSRUL&f=8&rsv_bp=1&rsv_spt=1&wd=NSurl&inputT=2709

2012-03-3118:22:20.917SmallDemoList[5473:11603]Fragment:(null)

2012-03-3118:22:20.917SmallDemoList[5473:11603]User:(null)

2012-03-3118:22:20.917SmallDemoList[5473:11603]Password:(null)

4:根据文件名称和文件后缀获取程序包内容文件的路径

NSURL*urlKindEditor = [[NSBundlemainBundle]URLForResource:@simplewithExtension:@htmlsubdirectory:@KindEditor/examples];

URLForResource:文件名称

withExtension:文件后缀

subdirectory:在程序包中的哪个子目录中寻找.

如果没有找到将会返回nil

ios开发工程师简历 篇6

个人信息

姓 名:xx 专 业:软件工程

学 历:本 科 工作经验:1年

移动电话:xxxxxxxxxxx 电子邮件:xxxxxxxxxxxx@163.com

求职意向 iOS开发工程师

工作经验 2013.6-2014.5 上海闪酷信息技术有限公司 iOS开发部 iOS开发工程师

工作描述: 1. 负责公司iOS平台下的iPhone应用程序的软件设计及开发;

2. 参与项目需求分析,产品模块的概要和详细设计;

3. 改善软件的性能,提高用户体验;

4. 根据公司的要求书写相应的技术文档;

专业技能

1.熟练掌握Object-c/c,了解C++,对Object-c的内存管理机制有较好的理解

2.熟练掌握MVC、单例、观察者、代理、工厂等设计模式

3.熟练掌握Json/XML解析等

4.熟悉 socket通信、TCP/UDP和HTTP协议

5.熟悉支付宝,二维码等

6.熟练掌握SQLite数据库,实现本地缓存与清除

7.熟练使用NSTread,GCD,NSOperation多线程开发

8.熟练操作App上架及版本更新

9.熟练使用SVN代码管理工具

10.熟悉C#及.Net

iOS 项目

1.项目名称:微吼(即将上线)

软件环境:Mac OS X 10.9

开发工具:Xcode5.0.2 + ios7.0

项目描述:该软件是一款商务视频社交应用,汇集各类顶尖峰会,行业沙龙,财经路演等 精彩直播,在微吼,你可以围观,更可以参加话题讨论,加入感兴趣的圈子, 更能成为万人瞩目的焦点。微吼让人人都有一个直播间。

应用技术:1.利用Rtmp协议进行视频直播

2.ShareSDK第三方登陆及分享

3.M3U8封装

4.视频播放器的定制

责任描述: 三人项目。本人负责:

1.实现第三方登陆及分享功能

2.根据需求自定义控件

3.m3u8格式封装

4.发表评论类似于贴吧功能

2.项目名称:易家(已上线)

软件环境:Mac OS X 10.8.5

开发工具:Xcode5.0.2 + ios7.0

项目描述:该软件是大亚智能家居安防产品的配套应用,让用户可以通过移动设备来远程

控制灯光、窗帘、插座等家居设备,通过智能定时联动的控制整个家居场景,

实现家居的智能化;通过全体布防、全体撤防、在家布防等安防场景,高清摄

像头远程实时监控家中的情况,实现家居的安全化;与此同时还能通过此应用

控制家庭多媒体影音系统,实现了多屏互动功能;远程浏览与管理网盘上的文

件和资料。

应用技术: 1.利用会话层协议进行底层控制

2.利用Scoket进行文件管理

3.利用Upnp实现推送

责任描述:三人项目。本人负责Upnp推送

3.项目名称:不打烊(已上线)

软件环境:Mac OS X 10.8.5

开发工具:Xcode5.0 + ios7.0

项目描述:该软件是一款本地O2O电子商务平台应用,承诺将消费者需要的产品以最便宜 在10-30分钟内送货上门,通过线上线下结合建设本地O2O综合服务平台。线 上的电子商务平台将覆盖本地商业和服务各领域。线下开设连锁便利店,提供 快速消费品,日用品和一站式生活服务。

应用技术: 1.不同的定制cell,瀑布流及动态效果的实现。

2.josn及XML数据解析

3.实现商品扫描及分享功能

4.利用CoreData实现数据缓存

5.调用支付宝快捷支付接口

责任描述: 个人项目。本人负责:

1.实现登陆注册及分享功能

2.实现商品条形码.二维码扫描功能

3.实现商品关键字检索功能模块及图片图片轮番展示

4.加入购物车及调用支付宝快捷支付接口

4.项目名称:外勤宝(已上线)

软件环境:Mac OS X 10.8.3

开发工具:Xcode4.6.3 + ios6.0

项目描述:该软件是解决企业对外勤人员的有效管理的一款应用。可以与PC端的管理人员 进行便捷的基于位置的信息交互。是企业外勤人员的得力助手.注:企业级账号 发布到公司平台

应用技术:1.cell的自定制。

2.XML及Json数据解析

3.网络数据的异步下载,及图片的异步加载

4.百度地图SDK

责任描述: 两人项目

1.整体界面的搭建以及自定义控件

2.地图导航及自定义标注

教育背景 .09—2014.06 xxxxxxxx 本科 软件工程

ios开发项目技术文档 篇7

关键词:iOS应用开发,微课教学,项目教学,辅助教学手段

0 引言

美国新墨西哥州的David Penrose在2008年正式提出了60秒课程的概念,相对于学校中普通一节45分钟或50分钟的课程,微课(Micro-Lecture)指课程长度只有几分钟,以讲明单一知识点为目的的短视频课程[1]。借助于互联网的普及,学生可以利用碎片化时间,完成知识的预习、复习或进行独立自主学习,微课的灵活性使其在移动学习和在线学习中获得了广泛应用。

微课创始人David Penrose认为,只要微课程有相应的作业和讨论配合,一定可以取得与传统长时间授课相同的效果。与此同时,对于学生而言,微课中布置的讨论课题,需要查阅许多资料,可培养其自主学习的能力,从而把学习的主动权交给学生;不同形式的课堂讨论,使学生在课堂上有了更多表达、交流的机会,不仅提高了学生间沟通协作的能力,而且改变了传统教学课堂中授课老师唱“独角戏”的状况,学生成为课堂教学的主体,提高了教学效率[2]。

1《iOS应用开发》课程教学现状

随着苹果公司的iPhone、iPad等移动设备在中国市场的占有率逐步提高,人们对于iPhone的定义已不仅仅是电话,对iPad的使用也不仅局限于看电影或浏览新闻,大多数人每天的生活已离不开各种各样的移动应用。由于每天都有各种新的移动需求需要实现,移动应用开发无疑在目前和未来几年内都有较好的就业前景。因此,面向有着良好计算机基础的学生开设《iOS应用开发》课程,可以让学生接触到最新的移动开发技术,提高学生在就业中的竞争力[3]。

《iOS应用开发》课程主要涉及Objective-C或Swift语言基础、视图编程、网络编程、数据库访问等,仅其中的一个视图编程就有数十种不同类型的控件,即使作为一名计算机专业的学生,有着良好的面向对象编程基础及实践经验(已熟练掌握Java或C++),学习该课程也有较大难度。作为一门选修课,安排课时较少、知识点多是课程教学过程面临的最大困难[4]。作为一门实践性非常强的课程,还需要利用一部分教学课时进行上机编程练习。因此,引入微课教学,充分利用学生的课余时间是解决课时少而知识点多矛盾的一种较好途径。

2 iOS学习资源及现存问题

随着苹果产品的热销,就业市场iOS开发人才的稀缺,各种移动教学平台上出现了许多视频教学资源。很多从业者在学习、开发实践中在各种社区论坛发表了大量笔记,这些资料给初学者提供了很大帮助。但是经过甄别,发现这些视频资源中,大部分资料是教育培训公司提供的示例教学视频。授课者大多数曾经在一线从事过iOS开发,但是教学水平参差不齐。教学过程中的常见问题主要包括:

(1)局限于知识点罗列,力求“大而全”。例如,Xcode是iOS开发的工具,《Xcode的使用》一般放在第二次讲授。在苹果电脑的《操作系统OS X使用》讲解完之后,有些老师将Xcode的所有菜单及子菜单功能都描述了一遍。实际上对于初学者而言,刚开始学习开发iOS应用所涉及的菜单仅为“文件/新建/项目”(File/New/Project)以及构建运行(Build and Run),只需学会打开/关闭“调试区域”、“资源管理器”、“工程代码编辑区”、“属性面板区”以及“调试输出”5个区域即可[5]。

(2)未考虑到教学内容和方式是否能够被初学者接受。主故事板(Main.Storybord)可以在一个窗口中形象地显示整个App涉及的界面,对于初学者而言,可省去创建对象、安排对象位置、设置对象属性等抽象的代码写作,降低了学习难度。由于授课者都有一定的iOS开发经历,很多教学视频中的老师在课程开始后不久,就开始采用代码实现UI控件,本来鼠标拖一拖就可以实现的操作,采用代码实现给初学者留下了iOS开发很难的印象。

(3)知识点讲述缺乏综合性,疏于对知识点的梳理。iOS开发的基本技术是控件开发,常见控件有近20种,很少有老师总结它们之间的联系和分类,让学生能够对某类控件的开发举一反三[6]。与培训班数月的连续培训不同,大学里的课程授课时间总共只有大约一周(40~50课时),不可能详细讲述每个控件怎么使用。比如,讲表视图(UITableView)时,要联系选择器视图(UIPickerView),因为它们“列”的描述很类似(在表视图中是section,在选择器视图中是component),编程方式也类似(有数据源,且需要实现代理等)。但是也需指出它们之间编程的不同点,例如选中事件的相应方式、具体操作单元的定位方法等。

(4)由于苹果公司的技术更新很快,视频中展示的很多技术已经过时。每年苹果公司在全球开发者大会(WWDC)上都会推出一些新技术。在iOS具体开发时,可以看到很多视频中用到的类与方法都已不再使用,而新的类与方法编程思路与旧的不一致。

3 项目教学法与微课结合

作为一门实践性很强的课程,在教学时需要预防两个极端:大量枯燥的理论讲授,或者只介绍简单的操作。如果把时间放在讲授iOS设计原理,如消息的传递机制,这对初学者来说难以接受;如果仅教孤立的单个知识点操作,学生将只会简单重复教师的工作,稍作改变就会不知所措。

项目教学法起源于哈佛大学培养MBA时采用的教学方法[7],与传统教学中以教师为主体、知识点有序传授不同,项目教学法是在教师指导下,学生根据项目需求,自主学习项目中所需的相关知识,最终完成项目设计。项目教学法与微课教学过程有相通之处:课堂教学不是简单地向学生灌输知识,而是把学习的主动权交给学生。对教师的要求不仅没有降低,反而有所提高。教师不仅要求会讲,而且要会做。在项目教学法中,教师面临的第一个任务就是选择合适的项目,难度太大不行,会打击学生的学习积极性;太简单也不行,无法将教学知识点串联起来;项目需求过时也不行,学生将缺乏兴趣和学习积极性。

笔者在教学实践中采取的方法是:1带领学生进行项目需求分析,将一个综合应用App进行任务分解,分配到不同设计组;2教师确定哪些是设计难点,哪些是一般知识点。难点由教师录制相应视频,发布到微课平台供学生学习参考;而对于一般知识点,学生可以通过查阅相关资料进行学习,教师在微课平台上以PPT方式提供一些参考链接;3在课堂教学的大部分时间,设计组每个星期进行项目进度汇报,或讲授其他同学负责任务中的关键知识点。每个成员的表现作为期末成绩评定的主要依据。

4 结语

通过实践,在《iOS应用开发》课程中应用微课教学,使学生“被迫”利用课后时间主动学习,从而延伸了教学时间,提高了教学效率。同时,通过项目设计,提高了学生的工程实践能力与学习兴趣。

在教学实施过程中也遇到一些困难,主要包括:1只有少数同学拥有苹果电脑,实验条件不足,上课前唯一的实验室比较拥挤。除鼓励学生探索在自己的PC机器上安装Mac OS外,可以在校内搭建一个具有Mac OS操作系统的云平台,学生只需通过Web即可连接到Mac服务器,随时随地使用Mac操作系统进行开发练习,就像www.macincloud.com提供的服务一样;2每个项目涉及知识点不一样,侧重点不同,教师时间有限,不能将所有项目先做一遍,因此项目库中的内容还不够丰富。为了解决该问题,要求进行毕业设计的学生,在常规的毕业设计项目基础上,提供任务分解的详细报告,分解过的项目可以作为教学案例,从而减轻教师工作量;3由于不能做到每人一题,对组内成员的单独考核准确度不高,存在少数同学承担任务量不足的现象。而且对于很多需要自学的内容,如果学生缺乏主动学习意识,这部分知识将无法传递给学生[8]。

微课作为一个新的辅助教学手段,在应用实践过程中仍会存在不少困难,但总体而言对提高教学效率是有益的,值得在实践性较强的课程教学中进行推广应用。

参考文献

[1]焦建利.微课及其应用与影响[J].中小学信息技术教育,2013(4):13-14.

[2]胡铁生,周晓清.高校微课建设的现状分析与发展对策研究[J].现代教育技术,2014,24(2):5-13.

[3]牛丽,殷凡.校企深度融合的创新创业型人才培养实践——以iOS移动开发人才培养为例[J].职业技术教育,2014,35(8):49-52.

[4]王勇,李程俊,吴杰.手机应用程序开发课程教学初探[J].计算机教育,2016(1):109-111.

[5]刘露.iOS 9带来的变化[J].百科知识,2015(15):26-27.

[6]龙马工作室.Swift从入门到精通[M].北京:人民邮电出版社,2015.

[7]卓敏,朱琴.项目教学法在本科专业课程教学中的应用研究[J].黄山学院学报,2015,17(1):90-94.

ios开发项目技术文档 篇8

关键词:电工技术基础 课程开发 技能训练

随着经济发展和社会分工的精细化,社会对人才的需求也更加职业化,这个背景下,教育体系逐渐发生变革,社会对职业教育培养高素质人才的要求越来越高。职业教育一定程度上担负着特定行业和岗位培养工作第一线操作技能人才的崇高使命,职业院校在提高学生专业技能和综合素质方面长期投入精力进行研究,在不断的探索和教学改革过程中,总结出许多具有现实意义的教学方法和教学模式。就电工技术基础这一课程而言,课程项目教学模式能够加强学生实践技能培养,并且在引导和激发学生学习兴趣、培养学习技能等方面都具有不错的教学效果,具备在职业教育中广泛推广使用的现实意义。

1.电工技术基础”课程项目教学开展的要求

(1)教材内容组织上

教材是为学生服务的,而非是给教师服务,因此教材内容组织上应以学生为贯穿整个教学环节的主线,以培养学生成才为教材内容组织的第一要务和最终目标。课程项目与教材内容图文应充分考虑到职业院校学生的特点,需简洁精练,让学生能够一目了然。职业教育的操作性要求使教材内容组织上需突出实践项目教学的价值和地位,理论与实践相结合,使学生实践中学习理论知识,获得学习的方法。教材资源十分重要,充分发挥网络的作用,拓展教材空间,同时把新的技术和设备补充进教材,促进学生的专业发展。

(2)教学模式的把握上

职业院校应该将项目课程教学放在重要地位,当成课程教学体系的一项重要内容,以提高学生的职业技能为紧要任务,将提高学生的实践动手能力为主要目标。在教学方式的选择上,结合电工技术基础课程的特点,尽量较多的选取合适的教学方法,顺应改专业在社会中的发展趋势,把最新的教学设备充分用到教学中来。教学模式的选择尽量偏向实践,让学生对理论知识和操作技能从实际动手过程中掌握到,这样一方面可以提高学生的积极的学习兴趣,另一方面对于获取到的知识也更加形象,不易忘记。当然,合作学习模式是职业教育的一项重要教学模式,比如建立学习基地,与企业合作、院校自主实验室或企业等。

(3)课程评价的运用上

电工技术基础项目课程教学的评价应该是全方位的,不能仅仅停留在最终结果的考核。考核评价需多元化,重视考核过程中学生学习的过程,将学生的实践操作能力放在首位。学习方法的掌握、自主学习能力、课堂表现、作业表现等都要纳入考核评价的范围。另外职业教育的特点也要求把学生综合能力放在评价的重要位置,纪要注意评价动手能力,也要评价学生分析问题、解决问题的能力,注重学生的创新意识和能力的培养。

2.电工技术基础项目课程开发

(1)依据典型职业活动分析确定课程目标

对以往该专业学生就业方向及整体状况进行调研分析,然后根据分析结果确定课程目标。简单来说,课程目标的确定需更加学生就业方向、职业特征、工作过程性质、工作岗位性质、工作对象、工具、工作方法、劳动组织要求等几个方面的职业资格标准来确定课程目标,一遍学生就业后能够顺利进入工作岗位并做出积极贡献。根据典型职业活动,将电工技术基础项目课程目标进行合理分类,比如工业电气控制方向、工业配电技术方向、电力设备电气技术方向等。每个分类确定需掌握的电工技术基础知识范围。

(2)规划课程内容和确定考核标准

在制定好电工技术基础项目课程目标后,根据目标规划课程的内容,内容要简洁精细,与课程目标紧密联系。比如电工实训室的认识与安全用电、直流电路的基础知识与技能训练、三相交流电路的基础知识与技能训练等。根据所确定的课程目标和课程内容,结合学生就业后的典型职业活动信息,确定合理的考核标准,考核标准也需要参考课程目标分类和典型职业活动分类。

3.电工技术基础项目课程教学设计

(1)以工作过程为导向设计学习单元

学习单元的设计要遵循这个阶段学生的学习和成长规律,并且还要结合学生就业岗位所需知识、技能等进行,学习单元的拆分和设置应和结合以后职业工作过程,使学习单元和工作过程一致来构建课程结构和知识序列。学习单元知识载体的选择需能够承载该工作过程所需的全部知识、技能和情感价值观。各学习单元间的编排关系要遵循从易到难、由简入繁的递进关系。并且各学习单元是与工作相结合的,所以又存在一定的并列关系。

(2)以工作过程为导向设计工作项目与任务

在确定好学习单元后,根据学习单元的规划和设置进行教学项目任务实施,实施前要将每个学习单元的教学内容按照“理实一体化”的课程理念进行设计。比如涉及电工技术基础的万用表学习单元,可根据其生产、使用工作项目流程设计教学任务,参看电工实训室→安全用电操作→识读万用表原理电路→材料的领取、清点与检测→绘制装配接线图→焊接、装配→检测、调试等程序。

(3)以工作过程为导向开发教学资源

教学资源是根据学习单元的教学目标和教学任务来选取的,教学资源同时还需要适合教师教学目标安排和学生学习需求及特点。教学资源包括硬件资源和软件资源,学习所需的支撑性材料。细化到电工技术基础项目课程来讲,以工作过程为导向的教学资源开发是建立在职业学生以后就业工作的基础上,但不局限于此,除工作技术基础知识、专业技术基础知识外,还应包含延伸知识及周边相关教学资源。

(4)以工作过程为导向实施导向教学法

既然以工作过程为导向,那么教学方法的选取应该以学生为主体,可采用学生主体的行动导向教学法。教学过程的安排与工作导向紧密结合,即明确教学任务→收集相关教学資源、内容信息→制定教学计划→进行决策→组织教学资源、实施教学任务和计划→过程检查→学习及教学过程、结果评价。

参考文献:

[1]李军.基于任务驱动的《电工技术基础》课程教学设计的研究[D].河北师范大学,2013.9.

[2]赵兵.示范教学在电工技术基础与技能课程教学中的应用[J].职业,2012.4.

[3]刘善培.对“电工技术基础”课程项目教学的探讨[J].教师,2012.4.

[4]戴小华.《电工基础》项目课程开发的实践与研究[J].科学大众(科学教育),2010.4.

iOS开发培训入门简单实践难 篇9

据国外媒体报道,亚洲最大移动应用开发商Animoca称现在开发和测试iOS设备上的应用相比比一年前容易很多。Animoca执行总裁萧逸表示,iOS手机产业硬件标准化的推进让公司iOS平台上的测试工作量大大减少,同时iOS平台的革新使得iOS应用的开发更加灵活。

苹果宣布全球iOS设备激活量达到9亿部;而中国的手持移动设备市场,iOS设备占到总量的百分之九十。中国的iOS应用开发市场潜力巨大。但是iOS开发工程师在中国仍然大量短缺,北京无限互联告诉大家,目前很多企业都给出了相当有竞争力的薪酬,可是iOS工程师却很难招,从事iOS开发的人才过少是其中的主要因素。随着苹果最新iOSstu-dio应用开发工具的发布,iOS应用开发环境和模式变得更加丰富和便捷。未来这一情况或许会有改观。

iOS开发工程师随着iOS智能手机的普及已经成为了IT企业的新宠。无限互联学院指出iOS软件开发工程师的薪酬涨幅很明显,无限互联iOS毕业开发学员的平均月薪已经超过了8000元。无限互联学员靠什么取得了如此的成就呢?

对于国内的iOS开发者,首先是数量不足,其次是很多做iOS软件开发的都是从其他语言的程序员转作iOS开发的。这两个问题导致了中国iOS软件开发的高端人才严重不足。无限互联正是面对这一难题,推出了iOS软件开发培训课程。同时无限互联采用实训教学法,通过大量的从企业引进的典型案例实训,帮助学员自我成长,自我总结提升,使学员掌握重要知识点的同时,积累在企业工作的实际工作经验。

未来iOS开发培训的入门会越来越简单,但是要进行模块化的细致开发,仍然需要大量专业的理论知识和实践经验,北京无限互联iOS软件开发培训课程帮你成为最专业最优秀的iOS软件开发工程师!

ios开发项目技术文档 篇10

我这个是以淘宝app的导航框架为例开发。

WHC_NavigationController.h头文件如下:

//// WHC_NavigationController.h// WHC_NavigationController//// Created by 吴海超 on 15/4/13.// Copyright (c) 2015年 吴海超. All rights reserved.//#import#define KWHC_Nav_Main_VC_Name (@“MyTabBarVC”) //主控制器类名#define KWHC_Nav_Touch_Back_Rate (0.4)//触摸拖拽可以返回条件比例#define KWHC_Nav_Pop_Form_Border (-1) //note > 0 from border pull < 0 any where pull diatancex > 30@interface WHC_NavigationController : UINavigationController//单例默认用KWHC_Nav_Main_VC_Name作为主控制器+ (instancetype)sharedInstance;//单例自定义主控制器+ (instancetype)sharedInstanceWithMainVC:(UIViewController*)mainVC;@end

WHC_NavigationController.m源文件如下:

上一篇:《触摸美丽》说课稿下一篇:友情作文700字 守护友情