iPhone开发常问的十个问题

iPhone开发常问的十个问题

前言

今天去stackoverflow.com上看了一下iPhone标签下排名最高的10个问题,将它们整理出来,希望这些常见问题能帮到一些iPhone开发的初学者。本来想把答案也翻译过来的,后来发现答案资料通常都比较复杂,翻译起来太麻烦。所以大家还是看英文的答案吧,我只顺带用中文总结一下答案。

问题一: 有哪些iPhone开发和Objective-C的入门资料

这个确实是最常问的问题了。对于我个人来说,入门时所看的资料主要是《From C++ to Objective-c》和《iPhone开发基础教程》,另外,我也把stanford的iphone视频课程看完了,链接是:http://www.stanford.edu/class/cs193p/cgi-bin/index.php

个人体会是边学边做,上手会比较快。编程这东西,不自己上手做做,没感觉。另外,如果入门之后想提高的话,我觉得还是需要把苹果每年的WWDC视频都下载下来看看,里面讲的东西还是非常有用的, 链接是:http://developer.apple.com/WWDC/

问题二: 如何在Windows中进行iPhone开发

大家还是把Windows想太全能了。至少在开发这一块上,Windows对于程序员来说,还是相当不友好的。这一点在使用Mac系统后,差别一下子就体会到了。就比如说git,在Windows下使用就有很多问题。另外话说回来,Mac机也不是什么都好,在中国,Mac系统相关的国内软件相当少,Mac下的游戏也相对Windows少很多,如果你想用Mac机来娱乐的话,会比较受限制。

问题三: 有哪些基于iPhone的base64编码的库

从这个问题的答案中,我选了一个我个人觉得比较好用的Base64编码库,放到我的Xcode Tool中了。地址是:https://github.com/tangqiaoboy/xcode_tool/tree/master/Encoding

问题四: 如何判断当前iPhone是否联网

最佳的答案是用苹果提供的Reachability类。详细的使用方式大家自己看答案吧,写得很清楚。

问题五: 如何做一个快速并且轻量级的PDF阅读器

我暂时没这个需求,就没有详细看答案。

问题六: 如何让我的app支持打开一种格式的文件

在iPhone 3.2以上系统中,使用URL schemes即可完成这个需求。详细见答案。

问题七: 当键盘出现的时候,如何让UITextField自动上移

对于iPhone界面控件的操作应该算是开发中必备的能力。键盘出现的时候上移相关的控件算是常见的需求,但是从这么多人问这个问题就可以看出,还是有很多人对这些需求的实现方式有疑问。

对于这个问题,主要是通过增加对键盘出现和消失的相应的Notification,然后在键盘出现和消息的时候,通过设置相关控件的frame来实现。相关代码如下,来源自stackoverflow。

-(void)textFieldDidBeginEditing:(UITextField *)sender{    if ([sender isEqual:_textField])    {        //move the main view, so that the keyboard does not hide it.        if  (self.view.frame.origin.y >= 0)        {            [self setViewMovedUp:YES];        }    }}

//method to move the view up/down whenever the keyboard is shown/dismissed-(void)setViewMovedUp:(BOOL)movedUp{    [UIView beginAnimations:nil context:NULL];    [UIView setAnimationDuration:0.5]; // if you want to slide up the view

    CGRect rect = self.view.frame;    if (movedUp)    {        // 1. move the view‘s origin up so that the text field that will be hidden come above the keyboard         // 2. increase the size of the view so that the area behind the keyboard is covered up.        rect.origin.y -= kOFFSET_FOR_KEYBOARD;        rect.size.height += kOFFSET_FOR_KEYBOARD;    }    else    {        // revert back to the normal state.        rect.origin.y += kOFFSET_FOR_KEYBOARD;        rect.size.height -= kOFFSET_FOR_KEYBOARD;    }    self.view.frame = rect;

    [UIView commitAnimations];}

- (void)keyboardWillShow:(NSNotification *)notif{    //keyboard will be shown now. depending for which textfield is active, move up or move down the view appropriately

    if ([_textField isFirstResponder] && self.view.frame.origin.y >= 0)    {        [self setViewMovedUp:YES];    }    else if (![_textField isFirstResponder] && self.view.frame.origin.y < 0)    {        [self setViewMovedUp:NO];    }}

- (void)viewWillAppear:(BOOL)animated{    // register for keyboard notifications    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:)                                                  name:UIKeyboardWillShowNotification object:self.view.window]; }

- (void)viewWillDisappear:(BOOL)animated{     // unregister for keyboard notifications while not visible.    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil]; }

问题八: 有关UIImagePickerController, Image, Memory的问题和答案整理

这个其实是一个相关问题的汇总贴。其中对于UIImage的操作示例挺有用处。做iPhone开发,总是会遇到一些图象处理相关的东西,能够从这儿积累一些相应的知识,到真正自己需要的时候帮助就大了。

问题九: 如何对包含自定义元素类型的NSMutableArray排序

答案讨论了各种方法,下面是其中提到的最简单的方法:定义一个比较用的selector

- (NSComparisonResult)compare:(Person *)otherObject {    return [self.birthDate compare:otherObject.birthDate];}

NSArray *sortedArray;sortedArray = [drinkDetails sortedArrayUsingSelector:@selector(compare:)];

问题十: 如何在iPhone中使用自定义字体

答案讨论了在iOS3.2以前及以后的做法,现在都5.1了,估计支持3.2以前的app很少了吧。所以我把iOS3.2以后的办法附在下面。简单来说,就是iOS3.2苹果支持自定义字体,只需要在Info.plist文件中设置UIAppFonts相关的信息即可。步骤如下:

  1. 将自定义字体加到你的工程资源文件中
  2. 在 info.plist 文件中增加一名为 UIAppFonts 的key
  3. 将这个key修改成array
  4. 将你用到的所有字体的名字,作为这个array的值,一项一项填进去(包括扩展名)
  5. 保存 info.plist
  6. 现在就可以在代码中直接用[UIFont fontWithName:@”CustomFontName” size:12]来取得你自定义的字体了。
时间: 2024-10-09 15:43:15

iPhone开发常问的十个问题的相关文章

iOS 开发百问(3)

22.解决 messagesent to deallocated instance 0x52cc690 错误 当试图对某个对象进行赋值操作的时候出现这个错误,如: tfContent.text=bodyText; 此时,你可以打开NSZombieEnable选项,则console会有如下输出: ***-[CFString _isNaturallyRTL]: message sent to deallocated instance 0x52cc690 说明_isNaturallyRTL消息被发送给

新手对于iPhone开发环境等入门问题解答汇总

1 iPhone能否在Windows中开发同类问题:iPhone能不能在XP开发?iPhone能不能在Vista下开发?iPhone能不能在linux下开发? 答: 如果要开发能够在App Store上线的iPhone应用程序,答案是不能.早在iPhone SDK出现之前,开发者会使用iPhone Toolchain进行开发.toolchain是可以安装在Windows的Cygwin或Linux环境的.但是目前如果您要开发可以在App Store进行销售的程序,请使用Mac OS系统.使用too

java面试常问的几个问题

1,作用域public,protected,private,以及不写时的区别 2,ArrayList和Vector的区别,HashMap和Hashtable的区别 3,char型变量能不能定义为一个中文?为什么? 4,多线程有几种表示方法,都是什么?同步有几种实现方法,都是什么? 5,继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么? 6,内部类的实现方式? 7,垃圾回收机制,如何优化程序? 8,float型float f=3.4是否正确? Jsp方面 1,jsp有哪些内置对象?作用

Java面试中常问的Spring方面问题

Spring Framework 现在几乎已成为 Java Web 开发的标配框架.那么,作为 Java 程序员,你对 Spring 的主要技术点又掌握了多少呢?不妨用本文的问题来检测一下. 1.一般问题 1.1. 不同版本的 Spring Framework 有哪些主要功能? Version FeatureSpring 2.5 发布于 2007 年.这是第一个支持注解的版本.Spring 3.0 发布于 2009 年.它完全利用了 Java5 中的改进,并为 JEE6 提供了支持.Spring

(转)大厂常问到的14个Java面试题

1. synchronized和reentrantlock异同 相同点 都实现了多线程同步和内存可见性语义 都是可重入锁 不同点 实现机制不同 synchronized通过java对象头锁标记和Monitor对象实现 reentrantlock通过CAS.ASQ(AbstractQueuedSynchronizer)和locksupport(用于阻塞和解除阻塞)实现 synchronized依赖jvm内存模型保证包含共享变量的多线程内存可见性 reentrantlock通过ASQ的volatil

计算机考研复试面试常问问题 计算机网络篇(下)

计算机考研复试面试常问问题 计算机网络篇(下) 在复习过程中,我用心查阅并整理了在考研复试面试中可能问到的大部分问题,并分点整理了答案,可以直接理解背诵并加上自己的语言润色!极力推荐打印下来看,效率更高!绝对良心之作! 此系列一共有8篇:编程语言篇|数据结构篇|操作系统篇|组成原理篇|计算机网络篇|数据库篇|软件工程篇|计算机专业英语篇(还未全部完成,敬请期待,你们的支持和关注是我最大的动力!) 个人整理,不可用于商业用途,转载请注明出处. 作者各个平台请搜索:程序员宝藏.快来探索属于你的宝藏吧

深入理解iPhone数据持久化(手把手教你iphone开发 – 基础篇)

在所有的移动开发平台数据持久化都是很重要的部分:在j2me中是rms或保存在应用程序的目录中,在symbian中可以保存在相应的磁盘目录中和数据库中.symbian中因为权限认证的原因,在3rd上大多数只能访问应用程序的private目录或其它系统共享目录.在iphone中,apple博采众长,提供了多种数据持久化的方法,下面笔者会逐个进行详细的讲解. iphone提供的数据持久化的方法,从数据保存的方式上讲可以分为三大部分:属性列表.对象归档.嵌入式数据库(SQLite3).其他方法. 一.属

[HTML面试]HTML5 面试中最常问到的 10 个问题

1. HTML5 新的 DocType 和 Charset 是什么?HTML5 现在已经不是 SGML 的子集,DocType 简化为:                  <!doctype html>HTML 5 指定 UTF-8 编码的方式如下:                 <meta charset="UTF-8"> 2. 如何在 HTML5 页面中嵌入音频?HTML 5 包含嵌入音频文件的标准方式,支持的格式包括 MP3.Wav 和 Ogg:<

iOS/iphone开发如何为苹果开发者帐号APPID续费

原文地址:iOS/iphone开发如何为苹果开发者帐号APPID续费作者:陈双超_群雄 其实相当的简单,这篇内容是给财务看的,有的地方连我自己看了都感觉有点...但如果不详细,她又要为难我,所以我就当她0智商 1.     打开 https://developer.apple.com/account/overview.action 2.(如何查看到自己的证书哪天到期,就是具体日起,这个的话平时是看不到的只有在最后60天的时候会提醒你.) 3.4.5.6.7.为了避免财务输入麻烦或者她输入出错引起