2012-03-16 9 views
0

私はプロジェクトを作成しても問題ありません。今私はいくつかのテストケースを書く必要があります。そこで、SenTestingKitを追加して設定しました。次に、クラスのインスタンスを作成し、そのクラス内のいくつかの変数の値を変更しようとして、テストケースを作成し始めました。問題は、いくつかの変数をローカル(デフォルトの "protected")として宣言しており、これらの変数を変更できないことです。ですから、@property(nonatomic、retain)を各変数に追加せずにインスタンスのvar値を変更することでテストする方法はありますか?ありがとうございます。iPhoneユニットSenTesting Frameworkを使用したテスト

答えて

0

私の目的は、変数に@property()を追加せずにインスタンス変数を変更することでした。

-(void)setValueOfArrayCount:(int)newValue{ 

    arrayCount = newValue; 
} 

-(int)getValueOfArrayCount{ 

    return arrayCount; 
} 

などのインスタンスメソッドを追加して、このメソッドを実行しました。これらのメソッドをこのクラスの外側から呼び出すことができました。

0

@ publicを使用して公開することができます。 object-> memberを使用してメンバーにアクセスできます。

0

Objective-Cは、高度に内省的でリフレクティブな言語です。すべての変数にアクセスして変更することができます。

あなたが実際にセッターを持っている(ただし、保護された)場合にのみ、[myObjectというperformSelector:@selector(setMyiVar :) withObject:値]

ような何かをしなければなりません。

セッターがない場合は、ランタイムメソッドを使用して、class_getInstanceVariableを使用してivarにアクセスして変更することができます。それをチェックしてくださいhttp://developer.apple.com/library/ios/#documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html

希望する!

関連する問題