如何解决已知Xcode错误/陷阱列表
| 有这样的清单吗? 我对iOS开发相对较新,我认为最好学习一系列最著名的编译器错误或陷阱的列表。 编辑: 今天,我花了太多时间来了解如下代码的情况: 在* .h中@interface I : NSObject {
..
NSSMutableArray* var; // typo,should be m_var;
}
@property (nonatomic,readonly) NSMutableArray* var;
在* .m
@implementation I
@synthesize var = m_var; // no warnings or anything
-(id) init
{
self = [super init];
if (self != nil)
{
// no warning or errors
m_var = [NSMutableArray new];
}
return self;
}
而且我认为是时候学习一些著名的Objective-C特质了。
解决方法
苹果的错误列表是苹果内部的。
我认为Open Radar是与苹果产品(包括Xcode)相关的错误的公开列表最接近的东西。它由社区维护-鼓励用户向Open Radar发布已提交给Apple的错误报告。
, 调试的黄金法则:这不是编译器的错。某些行为有些奇怪,例如您在此处显示的行为,但这是设计使然。至于有问题的“ bug”,编译器可以为您合成实例变量,而无需声明它们:
@interface Foo {}
@property(assign) float bar;
@end
@implementation Foo
@synthesize bar;
- (void) somewhere { bar = 1; }
@end
这很方便,允许您将专用接口移到实现文件中。回到您的示例,您现在有两个实例变量var
和m_var
,第二个变量用作var
属性的存储。这并不是完全值得高兴的事情,但这是很有意义的。 (是否可能会警告您,您的实例变量不能充当具有相同名称的商品的商店?)
由于这种行为主要是设计使然,因此您不会在Radar中找到它,因此必须寻找常见的Objective-C陷阱清单。 (这是另一种有趣的情况。)
, 苹果有自己的错误跟踪器,但您只能看到自己的报告(!?)
那么最好的选择就是openradar ...这是有限的。
编辑:关于您假定的Xcode Bug,即使这不是问题。
请记住,“ 6”只是语法糖,将在编译时生成代码。
我的猜测是您的var属性与您的var成员冲突。
我不会说这是一个错误,而是可以集成在clang静态分析中的一个可预测的问题。
无论如何,这显然是一个代码错字,人为错误,工具只是在帮助我们,否则我们将直接编写汇编字节码:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。