Objective c Xcode中可能存在编译器错误?

Objective c Xcode中可能存在编译器错误?,objective-c,ios,xcode,xcode4.2,Objective C,Ios,Xcode,Xcode4.2,情况如下: 我已经创建了一个自定义视图类,其中UITextView是其成员。在某些事件发生后,我将textView作为第一响应者 @inteface MyCustomView : UIView{ UITextView* textView; } - (void) doSomething; @end 在程序执行期间,我向MyCustomView的实例发送[doSomething]消息 [myCustomViewInstance doSomething]; 发生的事情非常有趣,程序崩溃时

情况如下: 我已经创建了一个自定义视图类,其中UITextView是其成员。在某些事件发生后,我将textView作为第一响应者

@inteface MyCustomView : UIView{
   UITextView* textView;
}

- (void) doSomething;

@end
在程序执行期间,我向MyCustomView的实例发送[doSomething]消息

[myCustomViewInstance doSomething];
发生的事情非常有趣,程序崩溃时抱怨UITextView:doSomething是无法识别的选择器

为什么程序在UITextView(其成员变量)上调用doSomething,而不是在MyCustomView的实例上调用doSomething

[myCustomViewInstance doSomething];
这里可能出了什么问题?(当然,这是我正在做的事情的规范版本,但我不明白在任何逻辑错误场景中,这可能是真的,除非编译器级别出现了问题)


您认为我应该进一步研究什么?

首先,Objective-C没有“成员”变量,它有实例变量。小事;但术语的确很重要

其次,发生崩溃是因为
myCustomViewInstance
指向的是
UITextView
的实例,而不是您的子类。这可能是因为您无意中进行了这样的赋值,也可能是因为您存在过度释放问题,并且碰巧所述变量最终指向了错误的对象

最后,虽然确实存在编译器错误,但这样简单的代码不太可能揭示迄今为止未知的编译器错误。您使用的编译器与编译操作系统无数行代码的编译器完全相同;这样一个简单的bug很可能意味着任何应用程序都无法运行,或者很可能设备甚至无法启动


这假设所述代码行实际上是崩溃的代码。

[myCustomViewInstance doSomething]
上设置断点。在调试器控制台中,
po myCustomViewInstance
并查看其内容。它真的是你认为的那个物体吗?(顺便说一句,根据您在这里给出的内容,现在就指责编译器还为时过早。)编译器不太可能为这些类型的错误负责。我们需要先了解您是如何创建对象的,然后才能了解问题所在。另外,@KurtRevis是对的,使用调试器。我非常怀疑这是编译器错误。这可能与内存管理有关。你能发布更多的代码吗?即,您如何分配您的对象?你是如何分配你的实例变量的?不知道为什么会被否决;这是一个合理的问题,每个程序员都必须从中吸取教训,不要在某个时候假设编译器出现错误。你们是对的,我应该对编译器比我的代码更有信心。100%的可能是我正在以某种方式向UITextView的实例发送消息。现在检查类类型以查找更多信息。谢谢。关于术语:作为人类最好的事情是我们仍然能够理解正在讨论的内容;但使用不精确的技术令人困惑。在这种情况下,“member”和“instance”变量基本上是可互换的,但精度仍然很有用。