Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 已知Xcode错误/陷阱列表_Ios_Xcode_Xcode4 - Fatal编程技术网

Ios 已知Xcode错误/陷阱列表

Ios 已知Xcode错误/陷阱列表,ios,xcode,xcode4,Ios,Xcode,Xcode4,有这样的清单吗 我对iOS开发相对较新,我认为研究一系列最著名的编译器bug或缺陷会很好 编辑: 今天,我花了太多时间来理解这样的代码: in*.h @interface I : NSObject { .. NSSMutableArray* var; // typo, should be m_var; } @property (nonatomic, readonly) NSMutableArray* var; 单位*.m @implementation I @synthes

有这样的清单吗

我对iOS开发相对较新,我认为研究一系列最著名的编译器bug或缺陷会很好

编辑: 今天,我花了太多时间来理解这样的代码:

in*.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特性了。

苹果的bug列表是苹果内部的


我认为这是最接近苹果产品相关bug的公开列表,包括Xcode。它由社区维护-鼓励用户发布并打开已提交给苹果的bug报告。

苹果的bug列表是苹果内部的

我认为这是最接近苹果产品相关bug的公开列表,包括Xcode。它由社区维护-鼓励用户发布并打开已提交给苹果的bug报告。

苹果有自己的漏洞报告,但你只能看到自己的报告(!?)

你最好的选择是。。。这是有限的

编辑:关于假设的Xcode Bug,即使这不是问题所在

记住,
@synthesis
只是在编译时生成代码的语法糖。 我猜您的var属性与您的var成员冲突

我不会说这是一个bug,更可能是一个可预测的问题,可以集成到clang静态分析中

无论如何,这显然是一个代码错误,一个人为错误,工具只是为了帮助我们,或者我们可以直接编写汇编字节码:)

苹果有自己的,但你只能看到自己的报告(!?)

你最好的选择是。。。这是有限的

编辑:关于假设的Xcode Bug,即使这不是问题所在

记住,
@synthesis
只是在编译时生成代码的语法糖。 我猜您的var属性与您的var成员冲突

我不会说这是一个bug,更可能是一个可预测的问题,可以集成到clang静态分析中


无论如何,这显然是一个代码错误,一个人为错误,工具只是为了帮助我们,或者我们可以直接编写汇编字节码:)

调试的黄金法则:这不是编译器的错。有些行为有点奇怪,就像你在这里展示的那样,但它们是故意的。至于问题中的“bug”,编译器可以为您合成实例变量,而无需声明它们:

@interface Foo {}
@property(assign) float bar;
@end

@implementation Foo
@synthesize bar;

- (void) somewhere { bar = 1; }

@end
这很方便,并允许您将私有接口移动到实现文件中。回到您的示例,现在有两个实例变量,
var
m_var
,第二个实例变量充当
var
属性的存储。这并不是一件值得高兴的事情,但它有着完美的意义。(是否会有一个警告,说明您的实例变量不能作为同名属性的存储?)


由于这种行为大多是设计出来的,你在雷达上找不到它,你必须寻找一个常见的Objective-C陷阱列表。(这是另一个有趣的情况。)

调试的黄金法则:这不是编译器的错。有些行为有点奇怪,就像你在这里展示的那样,但它们是故意的。至于问题中的“bug”,编译器可以为您合成实例变量,而无需声明它们:

@interface Foo {}
@property(assign) float bar;
@end

@implementation Foo
@synthesize bar;

- (void) somewhere { bar = 1; }

@end
这很方便,并允许您将私有接口移动到实现文件中。回到您的示例,现在有两个实例变量,
var
m_var
,第二个实例变量充当
var
属性的存储。这并不是一件值得高兴的事情,但它有着完美的意义。(是否会有一个警告,说明您的实例变量不能作为同名属性的存储?)


由于这种行为大多是设计出来的,你在雷达上找不到它,你必须寻找一个常见的Objective-C陷阱列表。(这是另一个有趣的情况。)

你怎么知道
m_var
总是为零。据我所知,
var
应该始终为零,因为您没有将其用于任何用途。@kubi对不起,您是对的。Xcode 4中的调试器窗口告诉我var为nil。您发布的代码中没有bug。您已经告诉编译器合成一个名为
m_var
的实例变量,它就是这样做的。@badocumentation states“使用@synthesis指令告诉编译器创建访问器方法”。所以我想我告诉编译器要这样做,不要创建实例变量。顺便说一句,我的问题并不是关于这个特定的问题。文档还说“根据需要合成实例变量”。在您的特定示例中,它是必需的,因为
m_var
尚未声明。不过,如果有一个警告就好了。你怎么知道
m\u var
总是为零呢。据我所知,
var
应该始终为零,因为您没有将其用于任何用途。@kubi对不起,您是对的。Xcode 4中的调试器窗口告诉我var为nil。您发布的代码中没有bug。您已经告诉编译器合成一个名为
m_var
的实例变量,它就是这样做的。@badocumentation states“使用@synthesis指令告诉编译器创建访问器方法”。所以我想我告诉编译器要这样做,不要创建实例变量。顺便说一句,我的问题并不是关于这个特定的问题。文档还说“根据需要合成实例变量”。在您的特定示例中,它是必需的,因为
m_var
尚未声明。不过,最好有一个警告。
var
实例变量是
nil
,因为您没有