公共IBOutlet

时间:2011-04-01 09:43:45

标签: objective-c public instance-variables iboutlet

我想在classB

上使用classA的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发送此错误:内部编译器错误:分段错误

或者,还有另一种方法吗?这个问题让我感到害怕!

提前致谢

2 个答案:

答案 0 :(得分:1)

您是否直接从XCode复制并粘贴此内容?你的代码看起来很奇怪 - ClassB.m不应包含ClassA的实现(这应该转到ClassA.m)
- 你可能不想要ClassA.myLabel.text,但是instance_of_ClassA.myLabel.text

如果这没有用,请您提供更多信息?

答案 1 :(得分: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 ++,反之亦然(当然总有Objective C ++)