iOS 开发百问(3)

22、解决 messagesent to deallocated instance 0x52cc690 错误

当试图对某个对象进行赋值操作的时候出现这个错误,如:

tfContent.text=bodyText;

此时,你可以打开NSZombieEnable选项,则console会有如下输出:

***-[CFString _isNaturallyRTL]: message sent to deallocated instance 0x52cc690

说明_isNaturallyRTL消息被发送给了一个已经释放了的对象。从上面的语句看,可能是这两个对象:tfContent、bodyText。

你可以打印tfContent或者bodyText的内存地址,看看到底是哪个对象已经被释放掉了:

NSLog(@"tfContent:0x%x",(int) tfContent);

NSLog(@"bodytext:0x%x",(int) bodyText);

结果表明是bodyText被提前释放:

tfContent: 0x52cf160

bodytext: 0x52cc690

在适当的地方对bodyText进行retain,问题解决。

23、 putpkt:write failed: Broken pipe错误

重启设备。

24、.hfile not found

实际上该.h文件并没有被包含进target。选择对应.m文件,点击“ShowUtilities”按钮(在工具条的右端),在Utilities中找到Target Membership,将Target前面的勾去掉,然后再重新勾上。即相当于将该.m文件重新加入target的Buildphase中。

25、 Xcode 4:如何将for iPhone的xib转变为for iPad

在Xcode 3.x中,将xib从iPhone版转变为iPad版,通过Create iPad Version菜单。

但在Xcode 4.x中,这个菜单找不到了。通过一番摸索,笔者发现可以用如下方法将xib转换为iPad版本。

1、修改xib源文件

xib文件其实是一个xml文件。在Project Navigator中,在xib文件上右键,选择“Open As -> Source Code”,即可以源代码方式查看xib文件,找到"com.apple.InterfaceBuilder3.CocoaTouch.XIB"一行,将其改为 "com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB",即增加了".iPad"。

按下?+F,打开搜索栏,点击Replace菜单,将模式改变替换模式。将xib文件中所有"IBCocoaTouchFramework"用 "IBIPadFramework"替换。

按下?+S,保存修改。

2、修改xib的视图尺寸

在xib文件上右键,选择“Open As -> Interface Builder – iOS”,用IB模式打开。

选择xib文件中的根视图(UIView),在属性面板中找到Size选项,将其改为Full iPad Screen。

现在,你可以有一个iPad版本的xib了。

26、icon dimensions (0 x 0) don‘t meet the size requirements.

打开Project的BuildSettings,找到Compress PNG Files,将值设置为No。

或者:

选中该png文件,在FileInspector面板中,找到File Type,将其由 "PNG" 修改为 "Icon".

27、警告: noprevious prototype for function

打开Target->BuildSettings,搜索prototype,将Missing Function ProtoTypes改为NO。

28、CorePlot编译时出现 错误“Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clangfailed with exit code 1”

请将Scheme 从 iOS Device 改为 iPhone 5.0 Simulator。或者将Compiler for C/C++ 改为 LLVM GCC4.2。同时,Core Plot 1.0 不再支持老的 armv6 CPU。

29、使用CABasicAnimation改变UIView的alpha值无效

UIView的alpha值,在CALayer中其实是"opacity",请使用opcity作为keyPath。

30、CorePlost:定制 Axis Label 后,Tick Mark 不显示。

设置Axis 的majorTickLocations 为你想显示 tick mark 的位置。

NSMutableArray*customTickLocations=[[[NSMutableArray alloc]init]autorelease];

for(int i=0;i<10;i++){

[customTickLocationsaddObject:[NSNumber  numberWithInt:i]];

}

xAxis.majorTickLocations=[NSSetsetWithArray:customTickLocations];

31、定制的UITableViewCell, indentationLevel不能生效

需要在定制的UITableViewCell中实现layoutSubviews方法。

- (void)layoutSubviews

{

[super layoutSubviews];

float indentPoints = self.indentationLevel *self.indentationWidth;

for(UIView *view in self.subviews){

view.frame = CGRectMake(

view.frame.origin.x+indentPoints,

view.frame.origin.y,

view.frame.size.width,

view.frame.size.height

);

}

}

iOS 开发百问(3),布布扣,bubuko.com

时间: 2024-12-05 23:11:33

iOS 开发百问(3)的相关文章

iOS开发百问(4)

32.UIImage+Scale缩放图片 UIImage可以加载图片,但是我们想要得到一张缩小或放大的图片,利用UIImage不能做到,下面我们添加一个UIImage的分类,用来实现UIImage中图片的放大和缩小. 首先,创建一个UIImage+Scale类. 然后,实现该类的方法: #import <UIKit/UIKit.h> @interface UIImage (scale) -(UIImage*)scaleToSize:(CGSize)size; @end #import &quo

iOS 开发百问(5)

42. 警告:Multiplebuild commands for output file target引用了名字反复的资源 找到当前的target,展开之后.找到CopyBundle Resources栏目.然后在里面找到反复名字的资源.删除不要的那个就可以 43.签名错误:Provisioningprofile can't be found 在Xcode中当你在更新了你得证书而再又一次编译你的程序,真机调试一直会出现Code Sign error: Provisioning profile

iOS 开发百问(10)

121.如何将字典/数组转换为字符串? NSString* id2json(id dicOrArr){ NSError *error; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dicOrArr options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about thereadability of the generated string error:

iOS 开发百问(8)

90.找不到 Profile 错误"CodeSign error: no provisioning profile at path '/Users/yourname/Library/MobileDevice/ProvisioningProfiles/F87A055A-EC0D-4F19-A015-57AB09DEBECB.mobileprovision'" 在 ProjectNavigator 中选择你的项目,使用 View ->Version Editor -> Show

iOS 开发百问(6)

61.警告"addexplicit braces to avoid dangling else" 所谓"危险的else"是类似这样的代码: if(a== 10) printf("TEN"); else printf("NOT TEN"); a = 100; 编译器认为你的else 子句导致语义不清,你到底是什么意思?是无论 a 是否等于10 , if 执行完之后都要将 a 赋值为100,还是只想在 else 子句(即 a 不等

iOS开发百问(11)

131.如何限制ScrollView在某个方向上不可滚动? 例如,要限制x方向上不可滚动,可以实现UIScrollViewDelegate协议方法: func scrollViewDidScroll(scrollView: UIScrollView) { ifabs(scrollView.contentOffset.x) > 0 { scrollView.contentOffset= CGPointMake(0, scrollView.contentOffset.y) } } 132.如何在Sw

iOS 开发百问(9)

101.编译错误:ld: library notfound for -lPods 当项目中使用了 cocoaPods 时,经常出现此错误(通常是 release 的时候). 这是由于 pod install 后,cocoaPods 会创建一个新的 workspace.你必须关闭项目并重新打开.问题即可解决. 102.为什么 iOS 的时间总是比真实时间慢8小时 例如,一个北京时间"2014-4-4 22:00"(字符串),需要转换成 NSDate.字符串转换成 NSDate 一般是通过

iOS 开发百问(7)

71.如何让UIWebView的大小符合HTML的内容? 在 iOS 5中,这很简单,设置 webview 的委托,然后在委托中实现didFinishLoad:方法: - (void)webViewDidFinishLoad:(UIWebView *)webView{ CGSize size=webView.scrollView.contentSize;//iOS 5+ webView.bounds=CGRectMake(0,0,size.width,size.height); } 72.窗口中

k3 Bos开发百问百答

          K/3 BOS开发百问百答   (版本:V1.1)           K3产品市场部       目录 一.基础资料篇__ 1 [摘要]bos基础资料的显示问题_ 1 [摘要]单据自定义无法看到bos定义的基础资料_ 1 [摘要]在调出基础资料序时簿时,过滤出我需要的基础资料_ 1 [摘要]bos定义的基础资料能否做到按名称而不是按代码进行自动匹配_ 1 二.业务单据篇__ 2 [摘要]是否支持多插件和数据授权_ 2 [摘要]K3BOS单据(新)中的数量字段怎样才能控制到两