好吧,我在目标 c 中的初始化类属性方面遇到了一些麻烦。我已经阅读了很多信息,但我没有找到我的问题的答案。所以我举个例子。1)
//Ex_1.h
@interface Ex_1: UIView {
IBOutlet UIButton *playBut;
}
@property(retain, nonatomic) IBOutlet UIButton *playBut;
-(void) method1;
@end
//Ex_1.m
@implementation Ex_1
@synthesize playBut;
-(id) initWithFrame:(CGRect)frame {
self = [super initWithFrame : frame];
if (self != nil)
playBut = [UIButton buttonWithType:UIButtonTypeRoundedRect]; //retainCount of playBut = 1;
return self;
}
-(void) method1 {
[playBut setTitle:@"pause" forState:UIControlStateNormal];
}
@end
我首先主程序我初始化 Ex_1 的对象,然后在一段时间后调用该对象的方法 1([对象方法 1]),我得到运行时错误(错误告诉我 playBut 是 dealloc,但我认为 playBut 的保留计数 = 1)。所以我有一些问题:
- 可能吗 ?
- 为什么垃圾收集器会释放 playBut 如果它的保留计数 = 1?(因为我不调用 [playBut release];
- 如何初始化类属性?
我熟悉 C++ 和 actionScript,但我一生中第一次看到垃圾收集器释放了类属性。我使用非ARC。这对我很重要。感谢您的关注和解答。