この質問は基本的ではないかもしれませんが、私が持っている問題は次のとおりです。Objective Cで初期化されていない値を設定するにはどうすればよいですか?
iPhone SDKからサンプルを実行しようとしていますが、アクセス違反が発生しています。私は疑わしいと思う行動をいくつか追跡しました。
はここで、クラスは次のようになります。私は
- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier
にブレークポイントを設定し、デバッガで「自己」を見てみると
@interface TableViewCell : UITableViewCell {
@private
UILabel *_earthquakeLocationLabel;
UILabel *_earthquakeDateLabel;
UILabel *_earthquakeMagnitudeLabel;
UIImageView *_magnitudeImageView;
}
、それは_earthquakeDateLabelは「0x12を」であることを示し、 _earthquakeMagnitudeLabelは0x1000で、他の2つはゼロです。非ゼロの値のいずれかに代入しようとすると、アクセス違反が発生します。
私は、これらには偽の値があることを推測しています。割り当てをしようとすると、偽の値の参照を減らして爆発してしまいます。しかし、私が言ったように、私はObjective Cをかなり新しくしています。
私の質問には、これらの値を初期化するための特別なことがありますか?または、それに偽の値があるときに値に割り当てる方法はありますか?
いくつかの追加情報:
私は初期に_earthquakeDateLabelと_earthquakeMagnitudeLabelにnilを割り当てるのであれば、問題を修正します。しかし、私はなぜオブジェクトがそれらのフィールドの値で作成されるのか理解していません。私はそれらが無実だと思う。オブジェクトはヒープ上に作成されている:
TableViewCell *cell = [[[TableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];