随笔分类 - 4. 苹果应用开发

苹果系列iOS、iPhone、iPad、Mac系统方面的开发,以及Xcode之类的应用经验等
摘要:平常访问iPhone应用程序中的资源文件时,只知道使用[NSBundle mainBundle],最近想在资源主目录里建立一个自己的目录,然后再放入自己的文件夹和文件,需要用这种办法:在xcode中Add Files时,要选中Creat folder references for any added folders这一项,这时加入到xcode工程中的文件会自己打包到发布安装包中。这个bundle与一个文件夹是对应的,可以按访问文件夹的方式来正常访问,当然是有沙盒限制的。访问的办法:NSBundle *myBundle = [NSBundle bundleWithPath:@"~/XQ 阅读全文
posted @ 2012-09-21 15:10 申龙斌的程序人生 阅读(4099) 评论(0) 推荐(0) 编辑
摘要:我自己写的苹果应用程序终于上架了,朋友们多多支持啊!(2012年12月,由于苹果开发账号已经过期了,产品下架了)http://itunes.apple.com/cn/app/xqviewer/id533672399?mt=8&ls=1XQViewer在 iTunes 中查看 用iPhone或iPad扫描该二维码可直接安装XQViewer应用。一款中国象棋棋谱浏览程序,当前只支持PGN格式文件的播放,系统内置了2012和2011年全国象棋甲级联赛的棋谱文件,以后再陆续更新更多的棋谱文件。 版本V1.0功能说明: 1)识别PGN格式的棋谱,当前还不支持注释 ... 阅读全文
posted @ 2012-07-15 11:01 申龙斌的程序人生 阅读(3237) 评论(2) 推荐(0) 编辑
摘要:iOS在4.0里也可以用正则表达式了,功能也是相当强大。曾以为自己已经掌握了正则表达式,这2天才明白正则表达式有多复杂,原来还有专门厚厚的一本书《正则表达式入门经典》。小程序的目标是匹配PGN棋谱中的着法部分。规则就是:数字表示第几回合,后面有个小句点,然后红方着法,可以跟评注,然后是黑方着法,可以... 阅读全文
posted @ 2012-07-01 11:05 申龙斌的程序人生 阅读(13176) 评论(2) 推荐(0) 编辑
摘要:对UIImage调整大小,不知道苹果的API里为什么不提供?//// ImageExtras.h//#import <Foundation/Foundation.h>@interface UIImage (Extras)- (UIImage *)imageByScalingToSize:(CGSize)targetSize;@end//// ImageExtras.m//// 摘自下面的论坛// http://www.iphonedevsdk.com/forum/iphone-sdk-development/7307-resizing-photo-new-uiimage-2.htm 阅读全文
posted @ 2012-06-22 21:02 申龙斌的程序人生 阅读(3868) 评论(0) 推荐(0) 编辑
摘要:最近将代码转换成ARC内存管理方式,用Edit菜单中的Refactor可以完成自动转换,还是非常方便,但马上编译后会给出警告。assigning retained object to unsafe property, object will be released after assignment.错误出现在对window和navController上。@interfaceMyViewerAppDelegate : UIResponder <UIApplicationDelegate>@property ( nonatomic) UIWindow *window;//主窗口上要出现 阅读全文
posted @ 2012-06-20 15:27 申龙斌的程序人生 阅读(2126) 评论(4) 推荐(0) 编辑
摘要:iPhone从4.3升级到5.1后,开发证书又出现莫名其妙的错误。历时5小时的不断折腾,从developer网站上revoke证书2次,重新生成provisioning,删除mac里的key chain,删除xcode中的证书,再从xcode的organizer中添加证书,修改xcode project中的签名参数,编译运行,最后Build是可以通过了,但仍然出现恼人的a valid provisioning profile for this executable was not found错误,几乎崩溃!最后新建一个project,把原来的project的源代码全部搬过去,竟然OK了!难道是 阅读全文
posted @ 2012-06-19 09:49 申龙斌的程序人生 阅读(19964) 评论(2) 推荐(0) 编辑
摘要:应用程序的名称和版本号等信息都保存在mainBundle的一个字典中,用下面代码可以取出来。NSDictionary* infoDict =[[NSBundle mainBundle] infoDictionary];NSString* versionNum =[infoDict objectForKey:@"CFBundleVersion"];NSString*appName =[infoDict objectForKey:@"CFBundleDisplayName"];NSString*text =[NSString stringWithFormat 阅读全文
posted @ 2012-06-05 08:29 申龙斌的程序人生 阅读(7809) 评论(0) 推荐(1) 编辑
摘要:使UIView能够支持点击的手势,需要用下面的代码:UITapGestureRecognizer *t = [[UITapGestureRecognizeralloc] initWithTarget:self action:@selector(singleTap:)];t.delegate = self;UIImageView *subView = (UIImageView*)[self.view viewWithTag:1234];[subView addGestureRecognizer:t];[t release];这里把手势加到了subView里,而没有加到整个rootView中,也就 阅读全文
posted @ 2012-05-30 16:12 申龙斌的程序人生 阅读(6048) 评论(0) 推荐(1) 编辑
摘要:在iPhone程序中集成广告,管他能不能赚钱,不放上一个iAd就心有不甘。参考了下面这篇文章:http://bees4honey.com/blog/tutorial/how-to-add-iad-banner-in-iphoneipad-app/还参考这个Integrating iAds into an iOS 4 iPad App (Xcode 4)教程。(1)加上iAd框架在项目设置里的Build Phases的Link Binary With Libraries,加上iAd.Framework。(2)在xib界面里拖入一个ADBannerView(3)修改ViewController的. 阅读全文
posted @ 2012-05-29 16:43 申龙斌的程序人生 阅读(7384) 评论(1) 推荐(2) 编辑
摘要:一个程序在模拟器上运行正常,但在真机上运行就是出错,排除了下列多种可能性: (1)用5.0的SDK开发,部署在4.3的真机系统上 (2)越狱的iPhone机器 (3)文件的汉字编码不正确 (4)ZIP文件包解压到iPhone机器里有问题 (5)苹果开发证书安装不正确 最后发现是该死的iOS文件系统竟然对大小写敏感!!!静下心来想想也是,MAC等系统都是从UNIX系统修改过来的,大小写早... 阅读全文
posted @ 2012-03-03 15:22 申龙斌的程序人生 阅读(3142) 评论(2) 推荐(0) 编辑
摘要:Mac虚拟机升级为Lion系统了,在iPhone模拟机调试时经常想访问应用程序的Document目录看看里面发生的状况,但在Lion系统中却找不到~/Library/Application Support/iPhone Simulator文件夹了。原来需要在Finder中这个~/Library文件夹默认是隐藏的,需要用特殊的办法才能显示。第一种办法:在Finder中,按住Option键,再到"前往"菜单中找到"资源库"项,久违的Application Support项终于可以看见了。第二种办法:在Finder中,按Command+Shift+G直接在文本 阅读全文
posted @ 2012-02-19 14:12 申龙斌的程序人生 阅读(3107) 评论(1) 推荐(1) 编辑
摘要:近日写了个有二级导航栏的程序,第一层导航栏点进去时有“Back”按钮,但再进入第二层时就找不到Back按钮了,百思不得其解,就从网上找了一段代码硬把BACK的按钮加上。//定制导航栏左边按钮上的字符串UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];self.navigationItem.backBarButtonItem = backButton;但后来在coc 阅读全文
posted @ 2011-11-20 14:46 申龙斌的程序人生 阅读(4063) 评论(2) 推荐(1) 编辑
摘要:看《Programming iOS 4》的第14章Views,记住这些要点:(1)UIView也是UIResponder的子类;(2)View有树状的层次结构;(3)view可以用XIB创建,也可以用代码来创建;(4)UIWindow也是UIView的子类;(5)view的坐标原点在左上角;(6)view显示不出来可能是忘了调用initWithFrame;(7)调用sizeToFit,会让view根据内容自动适应大小;(8)CGRect f = [[UIScreen mainScreen] applicationFrame]; 可取得不包括顶端状态条的区域对象;(9)CGRectInset可以 阅读全文
posted @ 2011-11-16 09:35 申龙斌的程序人生 阅读(1119) 评论(0) 推荐(0) 编辑
摘要:在项目的Target的Summary的iPhone/iPod Deployment Info的Main Interface可以选择主程序启动时要加载的XIB文件。 在xcode4.2里面新建的Empty Window模板里不再出现MainWindow.xib了,看出代码更简洁了,我从4.2中把这些代 阅读全文
posted @ 2011-11-10 08:25 申龙斌的程序人生 阅读(4506) 评论(2) 推荐(0) 编辑
摘要:在新建一个iOS Device项目后编译,出现Code Sign error: The identity 'iPhone Developer' doesn't match any valid certificate/private key pair in the default keychain错误,原来是Scheme选择的不对,xcode建立一个项目时,默认的scheme是“iOS Device”,我没有开发者证书,只能选择“iPhone 4.3 Simulator”或“iPad 4.3 Simulator”的scheme,等我的第一个iPhone程序写好了,必须花上 阅读全文
posted @ 2011-10-27 09:27 申龙斌的程序人生 阅读(1271) 评论(0) 推荐(1) 编辑
摘要:在一个iOS项目中引入了单元测试,感觉项目间的依赖关系有些乱,就建了一个新的Project,再把原来的.h和.m加进去,编译时竟然出现“SenTestingKit/SenTestingKit.h: No such file or directory”错误,google后发现这个帖子是正解,但原文说的 阅读全文
posted @ 2011-10-27 09:09 申龙斌的程序人生 阅读(13418) 评论(0) 推荐(0) 编辑
摘要:在xcode4中,为了将一些比较独立的功能封装起来,或者多人同时开发时,需要将程序打包成静态库,但在xcode4中设置工作区、工程和静态库等遇到了一系列问题,经过一番艰苦的试验后,终于在我的机器上把详细的设置步骤跑通了,吐血发此文。 阅读全文
posted @ 2011-09-29 11:12 申龙斌的程序人生 阅读(14505) 评论(7) 推荐(3) 编辑
摘要:在xcode里集成了一个单元测试框架OCUnit(在xcode自动生成的头文件里自动实现了SenTestCase的接口,不知道OC和Sen这2个字头有什么来历?),在新建一个工程时,可以自动生成单元测试框架,在如何在原有工程上加入单元测试框架就没有时间折腾了(好像有个帖子说可以的)。 实际上只有一些 阅读全文
posted @ 2011-09-27 09:47 申龙斌的程序人生 阅读(2988) 评论(0) 推荐(0) 编辑
摘要:iPhone程序开发中的内存泄漏问题是新手非常头痛的事情,可能是用C#这类自动垃圾释放的语言太习惯了,用xcode中的profile工具查了一下我写的小程序,内存泄漏了一大堆,经过一阵子排查,在NSMutableArray中添加对象后不正确维护对象的引用计数是一个主要原因。 在NSMutableAr 阅读全文
posted @ 2011-09-16 10:30 申龙斌的程序人生 阅读(15228) 评论(6) 推荐(1) 编辑
摘要:在读文件时,以前用kCFStringEncodingGBK_95字符集在控制台中运行正确的程序,在但iPhone模拟器中就读不出数据了,后来发现必须使用kCFStringEncodingGB_18030_2000这个字符集,另外那个kCFStringEncodingGB_2312_80试了也不行,难道是iPhone上支持的字符集就是这样有限?NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);/* kCFStringEncodingGB_2312_80 阅读全文
posted @ 2011-09-09 10:30 申龙斌的程序人生 阅读(1506) 评论(0) 推荐(0) 编辑