2011-04-01 51 views
1

我想在classB上使用classA上的IBOutletPublic IBOutlet

爲什麼這不起作用?

ClassA.h

@interface ClassA : UIViewController { 
      @public IBOutlet UILabel* myLabel; 
      } 
@property (nonatomic, retain) UILabel* myLabel; 
@end 

ClassB.m

#import "ClassA.h" 
#import "ClassB.h" 
@implementation ClassB 
      ClassA.myLabel.text =  @"Any String"; 

Xcode中發送此錯誤:內部編譯器錯誤:段錯誤

或者,有另一種方式做到這一點?這個問題正在殺死我!

在此先感謝

+0

當編譯器崩潰,這是相當一個嚴重的問題。確保提交一個bug:http://bugreport.apple.com/ – dreamlax 2011-04-01 09:50:39

回答

1

你在Xcode複製此直接&貼?你的代碼看起來奇怪。
- ClassB.m不應包含ClassA的實施(這應該去ClassA.m)
- 你可能不希望ClassA.myLabel.text,但instance_of_ClassA.myLabel.text

如果這並未沒有幫助,你能否提供一些更多的信息?

+0

我只是把classA的頭文件和classB的實現。我想在classB上使用classA上的插座,但是你是對的......如果沒有ClassA的實例,我不能做到這一點,謝謝......我會尋找另一種方法來解決這個問題 – Emas 2011-04-02 07:53:28

0

嗯,該代碼看起來像是由C++編碼器編寫的。不要穿過溪流。這是一個古老的問題,但我無法抗拒修復這樣的基本錯誤。

ClassA.h

@interface ClassA : UIViewController {} 
@property (nonatomic, retain) IBOutlet UILabel* myLabel; // iVar is created for you by compiler 
@end 

ClassB.m

#import "ClassA.h" 
#import "ClassB.h" 
@implementation ClassB 
    -(void)youNeedToBeInsideAMethod { 
    classAInstance.myLabel.text = @"Genius!"; 
    } 
@end 

的ObjectiveC!= C++或反之亦然(當然總是有目的C++)