已知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静态分析中的一个可预测的问题。 无论如何,这显然是一个代码错字,人为错误,工具只是在帮助我们,否则我们将直接编写汇编字节码:)