好程序员-ios开发小知识点(二)

时间:2019-05-12 19:45:39下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《好程序员-ios开发小知识点(二)》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《好程序员-ios开发小知识点(二)》。

第一篇:好程序员-ios开发小知识点(二)

、程序启动画面大小

iOS设备现在有三种不同的分辨率:iPhone 320x480、iPhone 4 640x960、iPad 768x1024。以前程序的启动画面(图片)只要准备一个 Default.png 就可以了,但是现在变得复杂多了。下面就是 CocoaChina 会员做得总结

如果一个程序,既支持iPhone又支持iPad,那么它需要包含下面几个图片: Default-Portrait.png iPad专用竖向启动画面 768x1024或者768x1004 Default-Landscape.png iPad专用横向启动画面 1024x768或者1024x748 Default-PortraitUpsideDown.png iPad专用竖向启动画面(Home按钮在屏幕上面),可省略 768x1024或者768x1004 Default-LandscapeLeft.png iPad专用横向启动画面,可省略 1024x768或者1024x748 Default-LandscapeRight.png iPad专用横向启动画面,可省略 1024x768或者1024x748 Default.png iPhone默认启动图片,如果没有提供上面几个iPad专用启动图片,则在iPad上运行时也使用Default.png(不推荐)320x480或者320x460 Default@2x.png iPhone4启动图片640x960或者640x920 为了在iPad上使用上述的启动画面,你还需要在info.plist中加入key: UISupportedInterfaceOrientations。同时,加入值UIInterfaceOrientationPortrait, UIInterfacOrientationPortraitUpsideDown, UIInterfaceOrientationLandscapeLeft, UIInterfaceOrientationLandscapeRight

17、ASIHTTPRequest实现断点下载

-(IBAction)URLFetchWithProgress:(id)sender { [startButton setTitle:@“Stop” forState:UIControlStateNormal];[startButton addTarget:self action:@selector(stopURLFetchWithProgress:)forControlEvents:UIControlEventTouchUpInside];NSString*tempFile = [[[[NSBundle mainBundle] bundlePath]stringByDeletingLastPathComponent]stringByAppendingPathComponent:@“MemexTrails_1.0b1.zip.download”];if([[NSFileManager defaultManager] fileExistsAtPath:tempFile]){ [[NSFileManager defaultManager] removeItemAtPath:tempFile error:nil];} [self resumeURLFetchWithProgress:self];}(IBAction)resumeURLFetchWithProgress:(id)sender { [resumeButton setEnabled:NO];[startButton setTitle:@“Start” forState:UIControlStateNormal];[startButton addTarget:self action:@selector(stopURLFetchWithProgress:)forControlEvents:UIControlEventTouchUpInside];[networkQueue cancelAllOperations];[networkQueue setShowAccurateProgress:YES];[networkQueue setDownloadProgressDelegate:progressIndicator];[networkQueue setDelegate:self];[networkQueue setRequestDidFinishSelector:@selector(URLFetchWithProgressComplete:)];ASIHTTPRequest*request=[[[ASIHTTPRequest alloc] initWithURL:[NSURLURLWithString:@“http://9991.net/blog/mp3/2.mp3”]] autorelease];[request setDownloadDestinationPath:[[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent] stringByAppendingPathComponent:@“MemexTrails_1.0b1.mp3”]];[request setTemporaryFileDownloadPath:[[[[NSBundle mainBundle] bundlePath]stringByDeletingLastPathComponent]stringByAppendingPathComponent:@“MemexTrails_1.0b1.zip.down”]];[request setAllowResumeForFileDownloads:YES];[networkQueue addOperation:request];

}(IBAction)throttleBandwidth:(id)sender { if([(UIButton *)sender state] ==YES){ [ASIHTTPRequest setMaxBandwidthPerSecond:ASIWWANBandwidthThrottleAmount];} else { [ASIHTTPRequest setMaxBandwidthPerSecond:];} }

18、Safari 启动本地app

在plist文件中加入URL types 结构如下图,在Safari中地址栏输入 设置的字符串,比如设置的是

QQ,地址栏输入 QQ:// 就可以起点本地应用。

19、拖到视频进度与滑动手势冲突解决办法

#pragma mark10.1.x system */ } else if(floor(NSAppKitVersionNumber)<= NSAppKitVersionNumber10_2){ /* On a 10.210.3.x system */ } else if(floor(NSAppKitVersionNumber)<= NSAppKitVersionNumber10_4){ /* On a 10.410.5.x system */

  } else { /* 10.6 or later system */ } 跟以上一样在 NSObjCRuntime.h中用定义了NSFoundationVersionNumber全局常量 小结:详解IOS SDK兼容性引导的内容介绍玩玩了,希望通过本文的学习能对你有所帮助!原文地址:http://blog.csdn.net/diyagoanyhacker/article/details/6673344

26、NSDate 与 NSString 转换

1、将字符串 “Fri Nov 11 09:06:27 +0800 2011” 转换成Date: NSDateFormatter *format = [[NSDateFormatter alloc] init];NSLocale *enLocale = [[NSLocale alloc] initWithLocaleIdentifier:@“en-US”];[format setLocale:enLocale];[enLocale release];[format setDateFormat:@“EEE MMM dd HH:mm:ss ZZZ yyyy”];NSDate *dateTime = [format dateFromString:message];

将Date转换成字符串: NSDate *date = [NSDate date];NSString * dateString = [format stringFromDate:date];//字符串转换成NSDate 需要设置NSLocale 否则真机上会失败。

2、获取当前时间,转化成字符串

NSDateFormatter * formatter = [[NSDateFormatteralloc]init];formatter.dateStyle = NSDateFormatterMediumStyle;formatter.timeStyle = NSDateFormatterMediumStyle;formatter.locale = [NSLocalecurrentLocale];self.timeLabel.text = [formatterstringFromDate:[NSDatedate]];

3、获取月、日、年、时、分、秒

NSDateFormatter *formatter =[[[NSDateFormatteralloc] init] autorelease];formatter.dateStyle = NSDateFormatterMediumStyle;formatter.timeStyle = NSDateFormatterMediumStyle;formatter.locale = [NSLocalecurrentLocale];

NSDate *date = [NSDatedate];

[formatter setTimeStyle:NSDateFormatterMediumStyle];NSCalendar *calendar = [[[NSCalendaralloc] initWithCalendarIdentifier:NSGregorianCalendar]autorelease];NSDateComponents *comps = [[[NSDateComponentsalloc] init] autorelease];NSInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;//int week=0;comps = [calendar components:unitFlags fromDate:date];int week = [comps weekday];int year=[comps year];int month = [comps month];int day = [comps day];[formatter setDateStyle:NSDateFormatterMediumStyle];// //This sets the label with the updated time.int hour = [comps hour];int min = [comps minute];int sec = [comps second];

NSLog(@“day%d”,day);NSLog(@“hour%d”,hour);NSLog(@“min%d”,min);NSLog(@“sec%d”,sec);

27、数组中存储数据查询

NSMutableDictionary *userDic1 = [NSMutableDictionary dictionaryWithCapacity:10];NSMutableDictionary *userDic2 = [NSMutableDictionary dictionaryWithCapacity:10];[userDic1 setValue:@“Li” forKey:@“name”];

NSArray *userArray = [NSArray arrayWithObjects:userDic1,userDic2,nil];NSPredicate *namePredicate = [NSPredicate predicateWithFormat:@“SELF.name contains[cd] %@ ”,@“L”];

NSMutableArray *searchArray = [NSMutableArray arrayWithArray:[userArray filteredArrayUsingPredicate:namePredicate]];

NSLog(@“searchArray == %@”,searchArray);

28、CoreText 总结

(1)NSAttributedString NSAttributedString 可以将一段文字中的部分文字设置单独的字体和颜色。与UITouch结合可以实现点击不同文字触发不同事件的交互功能。主要方法:

-(void)addAttribute:(NSString *)name value:(id)value range:(NSRange)range;可以设置某段文字的字体名称,颜色,下滑线等信息。

-(void)removeAttribute:(NSString *)name range:(NSRange)range;移除之前设置的字体属性值。

-(void)addAttributes:(NSDictionary *)attrs range:(NSRange)range;存储某段文字包含的信息(包括字体属性或其它,也可以存储一些自定义的信息)-(NSDictionary *)attributesAtIndex:(NSUInteger)location effectiveRange:(NSRangePointer)range;通过location来获取某段文字中之前存储的信息NSDictionary

//设置字体

CTFontRef aFont = CTFontCreateWithName((CFStringRef)textFont.fontName, textFont.pointSize, NULL);if(!aFont)return;CTFontRef newFont = CTFontCreateCopyWithSymbolicTraits(aFont, 0.0, NULL, kCTFontItalicTrait, kCTFontBoldTrait);//将默认黑体字设置为其它字体 [self removeAttribute:(NSString*)kCTFontAttributeName range:textRange];[self addAttribute:(NSString*)kCTFontAttributeName value:(id)newFont range:textRange];CFRelease(aFont);CFRelease(newFont);

//设置字体颜色

[self removeAttribute:(NSString*)kCTForegroundColorAttributeName range:textRange];[self addAttribute:(NSString*)kCTForegroundColorAttributeName value:(id)textColor.CGColor range:textRange];

//设置对齐 换行

CTTextAlignment coreTextAlign = kCTLeftTextAlignment;CTLineBreakMode coreTextLBMode = kCTLineBreakByCharWrapping;CTParagraphStyleSetting paraStyles[2] = { {.spec = kCTParagraphStyleSpecifierAlignment,.valueSize = sizeof(CTTextAlignment),.value =(const void*)&coreTextAlign}, {.spec = kCTParagraphStyleSpecifierLineBreakMode,.valueSize = sizeof(CTLineBreakMode),.value =(const void*)&coreTextLBMode}, };CTParagraphStyleRef aStyle = CTParagraphStyleCreate(paraStyles, 2);[self removeAttribute:(NSString*)kCTParagraphStyleAttributeName range:textRange];[self addAttribute:(NSString*)kCTParagraphStyleAttributeName value:(id)aStyle range:textRange];CFRelease(aStyle);

(2)Draw NSAttributedString

CGContextRef cgc = UIGraphicsGetCurrentContext();CGContextSaveGState(cgc);

//图像方向转换

CGContextConcatCTM(cgc, CGAffineTransformScale(CGAffineTransformMakeTranslation(0, self.bounds.size.height), 1.f,-1.f));

CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)weiBoText);

CGMutablePathRef path = CGPathCreateMutable();CGPathAddRect(path, NULL, drawingRect);textFrame = CTFramesetterCreateFrame(framesetter,CFRangeMake(0,0), path, NULL);CGPathRelease(path);CFRelease(framesetter);

CTFrameDraw(textFrame, cgc);CGContextRestoreGState(cgc);(3)图文混排

CTFrameRef textFrame // coreText 的 frame CTLineRef line // coreText 的 line CTRunRef run // line 中的部分文字 相关方法:

CFArrayRef CTFrameGetLines(CTFrameRef frame)//获取包含CTLineRef的数组 void CTFrameGetLineOrigins(CTFrameRef frame, CFRange range, CGPoint origins[])//获取所有CTLineRef的原点

CFRange CTLineGetStringRange(CTLineRef line)//获取line中文字在整段文字中的Range CFArrayRef CTLineGetGlyphRuns(CTLineRef line)//获取line中包含所有run的数组 CFRange CTRunGetStringRange(CTRunRef run)//获取run在整段文字中的Range CFIndex CTLineGetStringIndexForPosition(CTLineRef line, CGPoint position)//获取点击处position文字在整段文字中的index CGFloat CTLineGetOffsetForStringIndex(CTLineRef line, CFIndex charIndex, CGFloat* secondaryOffset)//获取整段文字中charIndex位置的字符相对line的原点的x值 主要步骤:

1)计算并存储文字中保含的所有表情文字及其Range 2)替换表情文字为指定宽度的NSAttributedString

callbacks.version = kCTRunDelegateVersion1;callbacks.getAscent = ascentCallback;callbacks.getDescent = descentCallback;callbacks.getWidth = widthCallback;callbacks.dealloc = deallocCallback;

CTRunDelegateRef runDelegate = CTRunDelegateCreate(&callbacks, NULL);NSDictionary *attrDictionaryDelegate = [NSDictionary dictionaryWithObjectsAndKeys:(id)runDelegate,(NSString*)kCTRunDelegateAttributeName, [UIColor clearColor].CGColor,(NSString*)kCTForegroundColorAttributeName, nil];

NSAttributedString *faceAttributedString = [[NSAttributedString alloc] initWithString:@“*” attributes:attrDictionaryDelegate];

[weiBoText replaceCharactersInRange:faceRange withAttributedString:faceAttributedString];[faceAttributedString release];3)根据保存的表情文字的Range计算表情图片的Frame textFrame 通过CTFrameGetLines 获取所有line的数组 lineArray 遍历lineArray中的line通过CTLineGetGlyphRuns获取line中包含run的数组 runArray 遍历runArray中的run 通过CTRunGetStringRange获取run的Range 判断表情文字的location是否在run的Range 如果在 通过CTLineGetOffsetForStringIndex获取x的值 y的值为line原点的值 4)Draw表情图片到计算获取到的Frame

(3)点击文字触发事件

主要步骤:

1)根据touch事件获取点point 2)textFrame 通过CTFrameGetLineOrigins获取所有line的原点 3)比较point和line原点的y值获取点击处于哪个line 4)line、point 通过CTLineGetStringIndexForPosition获取到点击字符在整段文字中的 index

5)NSAttributedString 通过index 用方法-(NSDictionary *)attributesAtIndex:(NSUInteger)location effectiveRange:(NSRangePointer)range 可以获取到点击到的NSAttributedString中存储的NSDictionary 6)通过NSDictionary中存储的信息判断点击的哪种文字类型分别处理

第二篇:100个iOS开发设计程序员面试题汇总

www.xiexiebang.com

美国上市公司

亿元级外企IT培训企业

100个iOS开发/设计程序员面试题汇总

无论是对于公司还是开发者或设计师个人而言,面试都是一项耗时耗钱的项目,本文作者Cameron Banga从编程、设计、App Store等各个方面对iOS开发者及设计师在面试时可能会遇到的问题进行了筛选与汇总。一方面,能够帮助HR在短时间内获取更多反馈信息,更好地甄选合适人选,而iOS开发者及设计师在寻找相关工作时,也可作为参考,为面试做好万全准备。

一、常见问题

你昨天/这周学习了什么?

你为什么热衷于软件开发?

你对哪一种控制系统比较熟悉?

是否参与过GitHub项目?

是否参与过GitHub或其他同类型网站的iOS开源项目?

请描述一下你的iOS应用开发流程。

是否熟知CocoaPods?它是什么?如何运行的?

请概括一下你对软件授权的理解,及其对软件开发的影响。

请概括一下你在构建iOS应用时的测试过程。iOS应用如何实现对其他语言、日期格式以及货币单位的支持?

请描述一下Instruments及其作用。

二、关于iOS技术

请解释一下Handoff是什么,并简述它是如何实现iOS、Mac/网页应用互通的。

iCloud包含了哪些技术与服务?

iOS扩展是指?能否列举一些热门或常见的范例?

HealthKit是什么?

HomeKit是什么?

Apple Pay是什么?能否描述一下如何在应用中使用Apple Pay?

请解释一下iOS应用沙盒机制。

VoiceOver是什么?请举例解释一下iOS中的辅助功能(Accessibility)。开发者如何使用这些功能?

iOS应用是如何实现后台多任务处理(Multitasking)的?

Game Center针对iOS游戏有哪些功能?

iBeacons是什么?

www.xiexiebang.com

美国上市公司

亿元级外企IT培训企业

Cocoa/Cocoa Touch是什么?

请概括一下Core Audio,Core Data以及Core Location各是什么。它们对iOS应用有何意义?

请描述SpriteKit和SceneKit的作用。

Metal是什么?

响应链(Responder Chain)是什么?它是如何发挥作用的?

按钮和其他控制方式对哪些操作做出回应?

AppDelegate扮演着什么样的角色?

请解释一下NSUserDefaults。就你而言,你会如何在磁盘中对数组对象进行序列化?

你会如何储存用户的认证信息?

请问何为Keychain服务?

为什么移动设备上的缓存和压缩是不可或缺的?

请解释一下~/Documents,~/Library和~/tmp。iOS中的~属于什么目录?

AirPlay是如何运行的?换做是你,你会如何通过编程提高应用的实用性以及演示效果?

传感器,IO以及WiFi、拨号等连接方式如何在iOS平台上运作?它们有何利用价值?请扼要地谈谈你的观点。

iPad 2,iPad mini 1-3,iPad Retina,iPad Air 2,iPhone 5、5S、6以及6+在硬件性能方面有何差异?这对注重性能的应用有何限制?

三、关于编程

Cocoa Touch包含什么?不包含什么?

为什么Cocoa Touch的类名称是以两个大写字母开头的?

Swift和Objective-C分别是什么?两者相比有何不同之处,又有何联系?

为什么Optional在Swift语言中非常重要?

请解释一下NSError。在Swift中,什么情况下能使用NSError,什么情况下不能?

请说明如何使用Instancetype及其重要性。

在Swift中,什么时候该用let,什么时候该用var?

为什么map函数必不可少?该在什么情况下使用它?

你会选择什么工具来追踪Bug?

如果在Cocoa中发现一个Bug,你会如何处理?

如果应用的新版本出现了Regression的情况,该如何补救?如何防止用户在使用过程中遇到新的Bug?

Objective-C的类是怎么执行的?Objective-C Runtime是如何实现的?

www.xiexiebang.com

美国上市公司

亿元级外企IT培训企业

iOS是如何提高安全性,保护用户隐私信息的?

应用可以下载并即刻显示数据。如何根据MVC来判断下载的最佳位置?

MVC对代码库(Codebase)的设计有何影响?

Controller Life-Cycle以及View Life-cycle分别有哪些调试方法?

iOS使用的是哪些设计模式(Design Patterns)?你的代码库使用的是哪些设计模式?

iOS提供哪些线程?如何充分利用这些线程?

请简要描述一下UIScrollView的执行过程。它是如何响应手势识别(Gesture Recognizer)、多点触控(Multi-Touch)和Run Loop的?

你认为iOS需要添加或改进哪些API?

四、关于界面

iPhone5、6、6+以及iPad Air 2的屏幕分辨率分别是多少?

分辨率的计算单位是什么?

请解释一下Interface Builder的作用以及NIB文件的概念。

iOS UI的图像储存类型是什么?

请描述一下Storyboard和标准NIB文件的差别。

设备状态栏(Device Status Bar)是什么?高度如何?是否透明?在手机通话或者导航状态下,它是如何显示的?

导航栏(Navigation Bar)是什么?能否拿出你的iPhone,指出你下载的哪些应用运用了导航栏?

选项卡(Tab Bar)和工具栏(Toolbar)分别是什么?两者之间有何共同点和不同点?

表视图(Table View)是什么?集合视图(Collection View)又是什么?

什么时候用“弹出(Popover)”属性最为合适?

Split-view Controller是什么?

选取器视图(Picker View)适合存放哪类内容?

应该在什么情况下使用标签、文本域和文本视图?

分段控件(Segmented Control)的作用是什么?

模态视图(Modal View)是什么?

iOS通知属于什么类型?

五、关于设计

iOS应用图标是指什么?请尽可能详细地描述一下。

最小尺寸和最大尺寸的应用图标分别是什么样子的?

应用图标能否包含透明的部分?

www.xiexiebang.com

美国上市公司

亿元级外企IT培训企业

Newsstand的图标与常规应用有何不同?

请解释一下启动画面(Launch Images)。

自动布局(Auto Layout)的作用是什么?请概括一下它是如何运行的。

设计软件时为什么要加上动画?

请描述一下软件设计中的交互和Feedback有什么作用。

设计iPhone和iPad应用时,应分别考虑哪些因素?

请描述一下原型设计对于软件开发的意义。其作用是什么?

六、关于App Store

应用内购买(In-App Purchases)是怎么回事?IAP能够为用户带来哪些新体验?

你是否在App Store上发布过应用?能否概括一下过程?

iTunes Connect是什么?

Provisioning Profiles是指?

App ID是什么?

iOS的开发和发布签名证书有何异同?

如何使用TestFlight?通过Ad-hoc发布应用的话,该如何使用UUID?

应何时验证购买收据?

发布iAds(苹果平台广告)有哪些要求?

七、趣味问答

最近有没有开发什么好玩的东西?你最引以为豪的作品是什么?

谈一谈你常用的开发工具都有哪些优势?

你最敬佩的独立Mac或者iOS应用开发者是谁?

最喜欢什么项目?哪种类型的?

你觉得Xcode有哪些需要改进的地方?

iOS上你最喜欢哪些API?

是否有最中意的错误报告?

你最爱以哪种方式来检验一项新技术是否好用?

为什么词典被称作Dictionaries,而不是HashTable或HashMap?

以上内容来自达内iOS培训机构,更多关于iOS的内容欢迎在线咨询!

第三篇:iOS开发高级程序员面试题-答案

一、判断题(每题2分,共20分)

1、UITableView能够绑定多个数据源。(错)

2、一个UIViewController可以管理多个UITableView。(对)

3、Object-c的类可以多重继承。(错)

4、objective-c类里面的方法只有两种, 静态方法和实例方法。(对)

5、NSFileManager和NSWorkspace在使用时都是基于进程进行单件对象的实例化。(对)

6、用类别增加方法时,不能与原来类中的方法产生名称冲突。(错)

7、frame指的是该view在本身坐标系统中 的位置和大小。(错)

8、method是一个方法的名字,selector是一个组合体。(错)

9、ARC是编译特性,不是运行时特性,在编译时,编译器会自动加上释放代码。(对)

10、从iOS4之后,Safari支持全屏浏览,Siri支持普通话。(对)

二、填空题(每空2分,共20分)

1、iOS是使用Objective-C语言编写的,使用该语言开发的Cocoa是一款功能强大的用户界面工具包,也是iOS的核心。

2、数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。链表恰好相反,其中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。

3、发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作。而发送异步请求不会阻塞主线程,会建立一个新的线程来操作,之后程序可以继续运行。

4、autorelease只是把Object放入了当前的autorelease pool中,当它被释放时,其中的所有Object都会被调用Release。

5、作为Objective-C导入头文件的关键字,#import<>用来包含系统的头文件,#import””用来包含用户头文件。

三、简述题(每题4分,共20分)

1、delegate和notification有什么区别,什么情况下使用?

答:delegate:消息的发送者(sender)告知接收者(receiver)某个事件将要发生,delegate同意然后发送者响应事件,delegate机制使得接收者可以改变发送者的行为。通常发送者和接收者的关系是直接的一对多的关系。

notification:消息的发送者告知接收者事件已经发生或者将要发生,仅此而已,接收者并不能反过来影响发送者的行为。通常发送者和接收者的关系是间接的多对多关系。

2、Object-C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么?

答:线程创建有三种方法:使用NSThread创建、使用 GCD的dispatch、使用子类化的NSOperation,然后将其加入NSOperationQueue。

在主线程执行代码,方法是 performSelectorOnMainThread。

如果想延时执行代码可以用performSelector:onThread:withObject:waitUntilDone。

3、iOS有哪些数据持久化方式?

答:四种:属性列表、对象归档、SQLite3和Core Data。

4、Objective-C如何对内存管理的,说说你的看法和解决方法?

答:Objective-C的内存管理主要有三种方式ARC(自动内存计数)、手动内存计数、内存池。解决方法的话:谁持有,谁释放。

5、如何对iOS设备进行性能测试?

答:Profile-> Instruments->Time Profiler。

四、问答题(每题10分,共20分)

1、什么是MVC,为什么使用MVC,有什么好处?描述一下iOS SDK中如何实现MVC的开发模式。

答:MVC分别为:模型(Model),视图(View)和控制Controller)。

模型(Model):即“数据模型”,用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权力,例如对数据库的访问。视图(View):视图层能够实现数据有目的显示。

控制器(Controller):控制器起到不同层面间的组织作用,用于控制应用程序的流程。对于iOS SDK,所有的View都是视图层的,它应该独立于模型层,由视图控制层来控制。所有的用户数据都是模型层,它应该独立于视图。所有的ViewController都是控制层,由它负责控制视图,访问模型数据。

2、请阐述UIViewController的生命周期,包括代码的执行顺序。答:当一个视图控制器被创建,并在屏幕上显示的时候。代码的执行顺序

// 视图显示在屏幕上的顺序

1、alloc 创建对象,分配空间。

2、init(initWithNibName)初始化对象,初始化数据。

3、viewload 从nib载入视图, 这一步不需要去干涉。除非没有使用xib文件创建视图。

4、viewDidLoad 加载完毕,可以进行自定义数据以及动态创建其他控件。

5、viewWillAppear 视图将出现在屏幕之前,马上这个视图即将显示在屏幕上。

6、viewDidAppear 视图已在屏幕上渲染完成。

// 视图将被从屏幕上移除的顺序

1、viewWillDisappear 视图将被从屏幕上移除之前执行。

2、viewDidDisappear 视图已经被从屏幕上移除。

3、dealloc 视图被销毁,此时需要在init和viewDidLoad中创建的对象进行释放。

4、viewDidUnload 出现内存警告在内存不足时执行,并对所有非当前显示的controller执行。本视图的所有子视图将被销毁,以释放内存,此时开发者需要手动对viewLoad、viewDidLoad中创建的对象释放内存。因为当这个视图再次显示在屏幕上的时候,viewLoad、viewDidLoad 再次被调用,以便再次构造视图。

五、论述题(20分)

请针对正泰中自智慧水务APP的需求(见现场展示的原型),论述您的开发思路和使用的开发技术。

第四篇:如何学习iOS开发

如何学习iOS开发

由于iphone手机带来的手机应用狂潮,现在很多人都希望从事这块的开发。很多初学者可能会问,怎么样才能学好iOS开发,我们要看什么书呢,还是什么视频,其实这些都不是重要的,重要的是,你认为自己可以学好iOS开发,认为自己可以坚持下来,这是关键啦。

其实学很多语言都是通的,从C语言入门,因为IOS开发用的是OC语言,是在C基础上的,不过也跟C不是很搭界,你可以直接学习OC语言也可以,还有开发工具是用Xcode,是在Mac系统的,你多摸索一下就可以开发简单的应用了,建议你买一本iphone开发秘籍第二版看看。学语言,无非就是要学好基础,弄清楚概念,然后做个简单的例子,慢慢的体会,基础打好了,到后面你会觉得突然自己提高了很多,很多东西都自然而然地明白了,在黑暗中的努力是为了迎接光明。

我觉得学iOS开发,首先心态要好,不要想着我已经学习很长时间了,可以找个好工作,可以赚钱了,牛人除外,不过大多都是普通人。

先慢慢培养兴趣下定决心,然后开始找资料,找视频,查百度。等你觉得这些基础的都差不多理解了,那就别看书,将精力集中于界面开发、一定的数据库开发、通讯接口开发、协同开发与联调。然后自己设计个东西,可以涵盖他们的,做个自己想做的东西出来,虽然可能很难,但是你会在过程中学到很多,是别人教不会你的。

在学习过程中遇到什么问题,你可以百度一下看看别人的回答,看多了印象就深了,也就慢慢掌握了。遇到什么思路上的问题,可以来论坛发帖,论坛肯定会有人来帮忙的,就算不能完全解决,也可以提供点参考。学习要会利用资源,论坛上那么好的资源不用可惜的哦,还有资料堆的东西,只要你能掌握70%,不相信你试试。

等学完了UI后,可以想想搞点数据的存储的东西,比如做个网络图片收集的,里面涉及到网络连接,图片保存,UI线程安全,数据库操作等等,又可以学到好多,何乐而不为呢。等学完这些,已经算不错了,接下去就要做点大的项目,最好是有客户端和服务器的,也练习下数据操作,了解下http协议,了解下wifi,了解下电话短信googlemap的等知识。如果是游戏,那么还需要涉及到引擎、建模、素材、光影、故事板等。推荐两本书两本经典入门书籍《objective-c基础教程》和《iphone4和ipad开发基础教程》。

当然你有兴趣的话可以在中间看看iOS的源码。

最后,等上层应用的东西基本学完了,学点底层的,你就做点调用底层的东西,深入了解下,就可以做很多东西了,比如3D游戏性能提高,编码解码等等。

还有一种快速地进行iOS开发,那就是通过互联网上面的在线移动开发平台,即使不懂技术也能开发,比如通过应用之星平台(appstar.com.cn)。不过今后如果真的想从事android开发这一行的,还是建议你们下定决心安心学习这么技术。如果只是暂时有这门兴趣,创意很多,那么可以试试互联网上的在线移动应用开发平台,因为操作都是傻瓜式的,这样会给你剩了很多时间,也不会让你学习的特别苦恼。

以上的经验希望大家参考下,主要是你觉得适合的,可以去试试,当然你可能有比我更好的方法,每个人都不同的嘛,但是都希望你们能成为高手。我觉得做好开发更重要的还是得靠自己不断的努力学习,师傅领进门学艺靠个人 相信自己,努力学习,一定会成功的。

原文地址:

第五篇:如何学习ios开发

如何学习ios开发

怎么学习ios开发?这是很多想学ios开发,又没有什么基础的同学遇到的疑问,针对这些问题,我想说说自己的看法,当然,希望我的这些经验能够帮到大家。、信念,一个没有信念的人是做不好大事情的,只要你心中有信念,坚持下去就会有收获。不管你是学哪一种编程语言,不用怀疑你能不能学会,只要你肯下工夫,坚持下去就一定会成,学不会只有一个原因,你没有付出足够的努力。

2、英语不是学会iOS开发的硬性指标,当然如果懂英语那学起来会容易一些是肯定的,针对英语这块,只要能懂一些就可以了,能看懂就已经很不错,大学四级那已经很牛X了。

3、对计算机有一定的了解,知道一些软件开发的基础知识,接触过C语言、.NET、PHP等对学iOS开发也会有一定的帮助,因为很多语言是相通的。

4、学iOS开发需要有一个苹果系统的电脑,最好有苹果原配电脑,有钱就买个mac pro,八九千不算很贵,钱少就买个四五千的mac mini,如果实在没钱又想着自学的话,那么就只能收紧裤腰带,厚颜买个山寨黑苹果主机了。(组装机 一般2000-2500 可以搞定 配置大概 4G 500G硬盘内存 I3 2012 H61主板系列 显卡GF430 以上的 都可以了。如果你的主机本身都是这样的配置 那么恭喜你 买个20元的mac lion 系统 马上就搞定了。上面的配置 装狮子系统没有问题。开发足够用了。)

5、学习iOS开发应该看什么书?怎么入门?怎么学习? 买本object-c 书学习下苹果使用的编程语言,对你的帮助会很大。时间有余再买本iPhone开发入门的书籍,平时空余时间看看,顺便听听视频,最后一点就是自己操作,光看作用不大,一定要落实到具体的操作上,找找感觉。如果不知道去哪里买就找我吧!视频买正版的,也就几百块钱,或者在淘宝上买一套视频教程,大概1700左右。

觉得买书都贵的话那就弄个电子版的书吧,反正多充几次电而已,谁让我们穷?生活那么拮据呢!省下的钱要请女友吃个啥买个啥呢。

参加iOS开发培训也可以,现在iOS开发培训大概也就4个月时间,花一两万系统学4个月也是一个不错的选择,虽然要一两万,但是效果跟自己学肯定是不一样的,要是自己学跟有老师带着学一样,那这个世界上将没有学校存在了。对于参加iOS开发培训的一定要选对机构,有句话说得好,选对比选好有时候重要太多。你考30分的成绩让你去北大清华也不一定能够成就了呢,所以选择口碑好的机构,专注iOS开发的机构比较好,不要选择Java、Android、iOS、PHP。。。什么都做的机构,毕竟咱基础不好,那些机构做杂很难做精。如果真的要上那些机构,除非你的基础非常好,老师随便讲讲你就能做到举一反三,否则我只能说:谁上过谁知道。

实在对自己摸不清,不知道自己到底适不适合学iOS的同学,有必要的话可以先入学测试一下,别什么都不闻不问就稀里糊涂的交钱了。更不要因为机构大就选,刚才也说了,一定要选对的,大机构有大机构的优势,小机构也有小机构的好处,大机构招人多,做的业务也多,资源不够用往往是大班授课,而且人多就业也难保证。小机构由于专注一个领域,所以专业性是不用怀疑的,而且由于人少,就业也有很大的优势。

有朋友问:我要学多久才能做项目?说实在的,这个问题回答起来有点难度,每个人接受能力不一样,因人而异。个人看法是:学过其他编程语言的,有两年工作经验以上的,学两周就可以自己入门做开发了,接着就是一边学习一边做,培训学3个月后就可以完全独立做项目了。

最后还想说一点,学习是一个长期的过程,只要你投入进去就好,坚持下去一定会有大收获。不管做什么或者学什么一定要避免三天打鱼两天晒网,这样效果不会明显。如果实在还有不明白的,可以找我,也可以网上搜索“无限互联”,那里有很多免费的视频。

下载好程序员-ios开发小知识点(二)word格式文档
下载好程序员-ios开发小知识点(二).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    ios程序员面试自我介绍(大全5篇)

    自我介绍是每个职场中人必然要经历的一件事情,成功的自我介绍会为你的职业生涯赢得一个精彩的开端。自我介绍是向别人展示自己的一个重要方式,直接关系到给别人的第一印象,......

    学习iOS开发心得

    学习iOS开发心得 据说,今年是高校扩招以来,大学毕业生最多的一年,将超700万,这么多大学生即将走入工作岗位。因此被人们戏称为史上2014“最难就业年”。 我在今年7月份也即将拿......

    分享:学习iOS开发心得

    分享:学习iOS开发心得 据说,今年是新中国成立以来,应届毕业生的人数高达700万,这么多大学生即将走入工作岗位。因此被人们戏称为“最难就业季”。 我在今年7月份也即将拿到沉甸......

    IOS开发工程师面试题

    湖南路线图网络科技有限公司 技术中心 内部资料 IOS开发工程师面试题(45分钟) 1. 请详述viewController的生命周期? 2. OC中类的属性retain, assign, weak, strong的作用是什么......

    分享软件开发小心得体会——(厦门ios开发培训)(最终5篇)

    分享软件开发小心得体会——(厦门ios开发培训)如何能在短短的30分钟或1小时内,快速识别出,坐在你对面的应聘人员,是否适合你的team。厦门博看文思来支招:1. 倾向于招什么样的软件......

    iOS开发培训方案201209

    iOS开发培训方案(2012.9-2012.10)1. 总体安排每周1.5天,共8周,总计12天。将8周培训时间分为3个阶段: 第一阶段:时间1周,基础准备阶段,iOS及其周边介绍(iOS生态圈,App Store等),iOS开发环......

    学习ios开发的心得[合集]

    苹果系统凭借其流畅的系统和良好的用户体验赢得了一致好评,由于对ios系统有浓厚的兴趣,所以最近一直对苹果ios系统有关注度。今年以来一直在学习有关ios方面的知识,最近利用空......

    做一个好程序员

    成为一个好程序员 有些人想成为一个程序员,总是在网络上问或者求助大家如何做,怎么做,其实也有些东西是实践中才会得到真正意义上的知识,而不是一味谈什么理论,当然理论也重要 1.......