さて、Objectivecの初期化クラスのプロパティに問題があります。たくさんの情報を読みましたが、質問に対する答えが見つかりませんでした。だから私は例を挙げます。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のオブジェクトを初期化し、次にこのオブジェクトのmethod1([object method1])を呼び出すと、ランタイムエラーが発生します(エラーはplayButがdeallocであることを示していますが、playButの保持カウント= 1だと思います)。だから私はいくつかの質問があります:
- 出来ますか ?
- ガベージコレクターがplayButの割り当てを解除するのはなぜですか?(保持カウント= 1の場合)([playButrelease]を呼び出さないため)。
- クラスプロパティを初期化するにはどうすればよいですか?
私はC++とactionScriptに精通していますが、ガベージコレクターがクラスプロパティの割り当てを解除したことを人生で初めて見ました。ARC以外を使用しています。それは私にとって重要です。ご清聴ありがとうございました。