2011-01-30 108 views
0

我有两个类。一个是使用相同的文件作为第二,与其他一些修改基本建立,但它们基本上是相同的,特别是对于他们的声明文件(有这样的事)...Xcode - 绿色变量x黑色变量

@protocol myClassDelegate <NSObject> 

// delegate protocol definition 

@end 


@interface myClass : UIView { 
id myObject; 
UIView *oneView; 
} 

@property(nonatomic,assign) id<myClassDelegate> delegate; 
@property(nonatomic,retain) UIView *oneView; 

,然后我有@synthesize oneView,委托; on .m

您看到的代码对于这两个类都是通用的。

两个类的实现里面,我多次使用这两个对象,例如:在我的第一类

[delegate doStuff]; // <-- do you see this blue delegate here? Xcode put it green when it is declared on .h first. 

,oneView或委托的每次出现都被Xcode中显示为绿色(见下图) 。在第二堂课中,他们显示为黑色。我通常认为这个绿色字是某种承认变量已经在声明中被识别并且对于该类是“全局”的。通常黑色变量表示本地实例。

现在的问题是,我有这些变量之一的问题被释放,没有我的意图,完全在它显示为黑色的类上。

该类中没有释放该变量(dealloc除外),但使用这两个类创建的对象始终在应用程序运行时一直处于活动状态。

什么可能是错的?

exampla of what I consider correct

在此先感谢。

+0

委托var不能被释放 - 它是一个assign-property! – Felix 2011-01-30 20:30:31

+0

抱歉,代码中存在拼写错误。 oneView被声明为保留。蚂蚁这一个视图在一个类中以黑色显示,而在另一个类中显示为绿色。给我带来问题的班级是变量是黑色的班级。 – Roger 2011-01-30 20:37:40

回答

0

如果标记属性为分配,你不能释放它在该类中,永远。这包括在dealloc中。从你的文章看来,你是在释放委托。请注意,你应该在dealloc中设置变量为零,或者如果你知道你已经完成了使用它,所以如果委托在别处被意外释放,你将不会崩溃。

至于着色,我认为唯一可能影响到这一点的是,如果你已经以同样的方式在两个文件中导入了“MyClassDelegate”。

1

我想在XCode编辑器中单词的黑色意味着XCode没有检测到这个词作为实例变量。也许你忘了声明delegate实例变量?因此错误必须在释放delegate

注:你可以改变语法通过查看它的喜好凸显了XCode颜色: enter image description here

+0

谢谢!问题是一个错字。 – Roger 2011-01-30 22:18:03