2011-07-19 4 views
0

私の方法が応答しないことが応答しないことが、私は得ることができない理由をClassA.hで+方法は

@interface ClassA : NSObject { 
    NSString *inStr; 
    NSInteger *peak; 
} 
@property (retain,nonatomic)  NSString *inStr; 
@end 

ClassBので

NSLog(@"%d peaks",peak); 
         peak++; 
         inStr = [NSString stringWithFormat:@"Peaks : %d",peak ]; 

         [ClassB setUpdateLabel:inStr]; 

ClassA.m

インチh

@interface ClassB : NSObject { 
      IBOutlet UILabel *peaksLabel; 
      NSString *tempStr; 
     } 

    @property (nonatomic, retain) UILabel    *peaksLabel; 
    - (void) setUpdateLabel:(NSString*)inStr; 
    @end 

in ClassB.m

#import ClassB.h 
@implementation classB; 
-(void) setUpdateLabel:(NSString*)inStr{ 
    peaksLabel.text=inStr; 

} 

誰でも手伝ってもらえますか?

答えて

2

- (void) setUpdateLabel:(NSString*)inStr;をインスタンスメソッドとして宣言していますが、これをクラスメソッドとして使用しています。

「 - 」インスタンスメソッド 「+」を示しますが、これがあなたの仕事をしたいのいずれか+ (void) setUpdateLabel:(NSString*)inStr;に宣言を変更するか、このようなクラスBのオブジェクトを作成する場合は、クラスメソッドに

を示しています

ClassB *obj = [[ClassB alloc] init]; 
[obj setUpdateLabel:@"Something"]; 

をリリースしてください。

+0

しかし、peaksLabel.textにアクセスできません。 – BrainOverfl0w

+0

代替手段はありますか? – BrainOverfl0w

+0

@frederic:どうしてですか? – LuckyLuke

0
  • (void)setUpdateLabelはクラスメソッドではありません。 classBのインスタンスを作成し、このインスタンスにメッセージを送信します。

    classB * instance = [[classB alloc] init];

    [インスタンスsetUpdateLabel:inStr];