转自:http://blog.csdn.net/dongfengsun/article/details/4870650
前言:iPhone是个极具艺术性的平台,相信大家在开发过程中一定有很多感触,希望能写出来一起交流,所以开了这个帖子,以后还会维护。
如果大家和我一样有感触的话,可以跟在帖子下面,最好简短并附上中英文:)
1:如果无法保证子类行为的一致性,那么就用委托 If the subClass cann't keep with superClass,use delegate rather than inheritance. |
2:屏幕上看到的,都是UIVew Everything you see on Screen is UIView. |
3:如果对性能要求高,慎用Interface Build if application's performance is important,be discreet for the interface build. |
4:copy是创建,retain是引用 the copy operation is create a new one,but the retain operation is just a reference. |
5:alloc需要release,convenient不需要release alloc method need corresponding release method,but convenient method not. |
6:加载到NSArray/NSMutableArray里的对象,不需要负责release The objects added to NSArray/NSMutableArray need not to be released. |
7:IBOutlet,IBAction为你开启了访问Interface Build中对象的大门 IBOutlet and IBAction open the door to access the objects in Interface build. |
8:UIApplicationDelegate负责应用程序的生命周期,而UIViewController负责View的生命周期 UIApplicationDelegate is responsible for the application life cycle,but UIViewController for the UIView. |
9:为了程序的健壮性,请尽量实现Delegate的生命周期函数 if you want to develop a robust application,implement the life cycle methods as more as possbile. |
10:哥触摸的不是UIEvent,而是NSSet的UIView what you touch on screen is not UIEvent but UIView |
一些开源项目:
扫描wifi信息:
http://code.google.com/p/uwecaugmentedrealityproject/
http://code.google.com/p/iphone-wireless/
条形码扫描:
http://zbar.sourceforge.net/iphone/sdkdoc/install.html
tcp/ip的通讯协议:
http://code.google.com/p/cocoaasyncsocket/
voip/sip:
http://code.google.com/p/siphon/
http://code.google.com/p/asterisk-voicemail-for-iphone/
http://code.google.com/p/voiphone/
three20
https://github.com/facebook/three20
google gdata
http://code.google.com/p/gdata-objectivec-client/
720全景显示panoramagl
http://code.google.com/p/panoramagl/
jabber client
http://code.google.com/p/ichabber/
PLBlocks
http://code.google.com/p/plblocks/
image processing
http://code.google.com/p/simple-iphone-image-processing/
json编码解码:http://code.google.com/p/json-framework
base64编码解码:http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/?r=87
xml解析:https://github.com/schwa/TouchXML
安全保存用户密码到keychain中:https://github.com/ldandersen/scifihifi-iphone
加载等待特效框架(private api):https://github.com/jdg/MBProgressHUD
http等相关协议封装:http://allseeing-i.com/ASIHTTPRequest
下拉刷新代码:https://github.com/enormego/EGOTableViewPullRefresh
异步加载图片并缓存代码:http://www.markj.net/iphone-asynchronous-table-image/
iphone TTS:https://bitbucket.org/sfoster/iphone-tts
iphone cook book 源码:https://github.com/erica/iphone-3.0-cookbook-
iphone正则表达式:http://regexkit.sourceforge.net/RegexKitLite/
OAuth认证: http://code.google.com/p/oauth/
http://code.google.com/p/oauthconsumer/
蓝牙协议栈:http://code.google.com/p/btstack/
语音识别:http://www.politepix.com/openears/
ShareKit:http://www.getsharekit.com/install/
日历控件:http://code.google.com/p/iphonecal/
https://github.com/klazuka/Kal
zlib, openssl:http://code.google.com/p/ios-static-libraries/
地球显示信息:http://code.google.com/p/whirlyglobe/
has been modified since the precompiled header was built
错误
(原因:预编译头的时候文件被修改);
解决方法:1.Select Product > Clean from the Xcode menu
快捷键shift+command+k;clean一下
--------------------------------------------------------
字符串拼接
NSString* string; // 结果字符串
NSString* string1, string2; //已存在的字符串,需要将string1和string2连接起来
//方法1.
string = [NSString initWithFormat:@"%@,%@", string1, string2 ];
//方法2.
string = [string1 stringByAppendingString:string2];
//方法3 .
string = [string stringByAppendingFormat:@"%@,%@",string1, string2];
经常用的是第二种方法。