XCode 常见错误
来源:互联网 发布:网络设计师 编辑:程序博客网 时间:2024/05/22 03:39
关于Use Automatic Reference Counting引发EXC_BAD_ACCESS Bug的问题
经过这几天objective-c的学习,感觉对iOS的开发有点儿了解了,所以想用uikit写个hello world程序,坚定一下自己的自信心。结果没想到本来以为毫无悬念,有点儿多余的代码,让我折腾了一上午。在这里贴出来,或许有来往客观给指点一二。
重现过程
我的XCode版本是4.5,项目内容很简单,就是用xib创建一个文本框和一个按钮。点击按钮后,用alert弹出文本框中的内容。
代码大致如下:
@interface HomePage : UIViewController@property(nonatomic, retain) IBOutlet UITextField *txtTitle;@property(nonatomic, retain) IBOutlet UIButton *btnSubmit;-(IBAction)txtTitleAction:(id)sender;-(IBAction)btnSubmitAction:(id)sender;@end// 实现代码@implementation HomePage@synthesize txtTitle, btnSubmit;-(IBAction)txtTitleAction:(id)sender{ self.txtTitle.text = @"";}-(IBAction)btnSubmitAction:(id)sender{ UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:self.txtTitle.text delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil]; [alertView show];}
界面与变量和action的关联如图所示:
运行没有错误,但是如果执行上面的action就是报EXC_BAD_ACCESS错误。如下图所示:
解决方法
如上图所示的错误让我纠结了好久,找不出问题出在哪里,调试似乎也无从下手。百度了好久,找到了这篇日志:http://my.oschina.net/ldaga/blog/59202?p=1。经过测试发现,这个博客中写的很对,都是Use Automatic Reference Counting惹的祸。
在工程设置中,将Objective-C Automatic Reference Counting、Objective-C Automatic Reference Counting ABI incompatibilities、Using __bridge casts outside of ARC 这几个选项都设置为 NO,将项目重新编译,问题解决。
总之,珍爱生命,不要使用自动释放内存……
0.unrecognized selector sent to instance:
1、向一个已释放对像发送信息2、向一个不存在的对像发送信息,特别注意,有参数的方向法名要加":"号(@seletor(dosomething:))
1.this class is not key value coding-compliant for the key ...
1、interface build与代码中IBOutlet的连接所引起的。
2、在代码中对iboutlet的名称进行了修改,导致interface build中的连接实效。
3、如果在该viewcontroller连接的xib文件中没发现错误,那就很可能是mainWindow.xib文件中存在问题,在mainWindow.xib的tabbarcontroller的某个tab的viewcontroller设置了loadfrom"**.xib",但忘了将其class设为对应的viewcontroller类了。
2.Local declaration of 'scrollView' hides instance variable
1、己存在一个和 'scrollView'一样的外部变量(指针)
3. 使用 main.xib时,有 报“defines presentation context is not available prior to xcode 4.2 ”的waring。
解决: 选择main.xib的 navigation controller , 然后,Development选择 Xcode 4.2
4.Property with 'retain (or strong)' attribute must be of object type...
通常是声名id,int等类型当作指针导致,不要*号即可。
5.Missing file warnings
由于我使用了xcode自带的respositories,按照网上在终端输入指令的方法均不可行。这里我有个方法,在该项目xcode里在同一个地方新之建同一样的文件,然后在xcode里删除,即可。
6.mutating method sent to immutable object....
mutating method(可变量对应的方法)
immutable object(不可改变的变量):
明白了吧?比如将NSMutableArray的方法用在NSArray上就会报这个错误。
immutable object(不可改变的变量):
明白了吧?比如将NSMutableArray的方法用在NSArray上就会报这个错误。
7.Multiple build commands for output file
target引用了名字重复的资源,找到当前的target,展开之后,找到Copy Bundle Resources栏目,然后在里面找到重复名字的资源,删除不要的那个即可
- xcode 常见错误解决方案
- XCode 常见错误
- XCODE常见编译错误
- Xcode常见错误
- [xcode]常见错误
- xcode 升级常见错误
- Xcode常见错误
- Xcode常见编译错误
- Xcode常见错误
- 黑马程序员--xcode 常见错误
- Xcode常见错误 与 警告
- xcode常见错误处理备忘
- Xcode常见警告和错误
- Xcode 版本升级常见错误及警告
- Xcode因为证书问题常见的错误
- ios Xcode 运行常见错误解决
- xCode中常见的错误分析
- xCode常见的一些错误总结
- Windows的批处理脚本
- Ubuntu10.x下编译apache2.X和php5 操作步骤
- 函数指针与成员函数指针
- Javascript常用正则表达式
- 菱形块
- XCode 常见错误
- 素数
- HUD 4473 Exam
- hadoop2官方文档中文翻译---索引
- js真假判断
- [每日技巧] 在 Mac OS X 系统 Finder 中直接显示图片尺寸
- Fortran分割字符串和字符串替换的子程序
- NOIP 2012 Vijos 1787 普及组 寻宝 模拟
- 九度笔记之 1405:店小二的IDEA