0

只是当你认为你理解某事时,你没有!:)

我知道,如果我将变量设为属性,我可以在类中的任何位置访问它,甚至可以从该类外部设置它。

我想如果我不需要它,我可以把它变成一个 ivar。所以我有一个带有大约 5 个 UILabel 的视图控制器。所以在它的 viewDidLoad 我说:

pharmacyName.text = self.receivedLocation.name;
    pharmacyTel1.text = @"556-7843";
    pharmacyTel2.text = @"991-2345";
    pharmacyTel3.text = @"800-0001";

当我在 .h 文件中这样声明它们时:

@interface DetailViewController : UIViewController{
    IBOutlet UILabel *pharmacyName;
    IBOutlet UILabel *pharmacyTel1;
    IBOutlet UILabel *pharmacyTel2;
    IBOutlet UILabel *pharmacyTel3;
}

@property (nonatomic,strong) MyLocation *receivedLocation;

@end
4

2 回答 2

5

不,将 ivar 创建为属性不是强制性的。如果您不想在课堂外访问它,请按原样使用。在 ARC 中,您还可以如下声明您的 IBOutlet:

@interface DetailViewController : UIViewController{
    __weak IBOutlet UILabel *pharmacyName;
    __weak IBOutlet UILabel *pharmacyTel1;
    __weak IBOutlet UILabel *pharmacyTel2;
    __weak IBOutlet UILabel *pharmacyTel3;
}

这将保留一周的网点参考。这是__weak 和 strong的详细信息

于 2013-05-31T04:17:08.330 回答
0

总有很多方法可以处理编程任务和标准。我们小组已经开始使用一些编码标准。我们喜欢将不能从类(和协议语句)外部访问的实例变量放在 .m 文件的私有接口中,如下所示:

@interface DetailViewController() {
    NSString *value_;
}

@end

我们也喜欢使用@property我们的实例 ivars 并在私有接口中声明它们,如下所示:

@interface DetailViewController() {
}

@property (nonatomic, strong) IBOutlet UIlabel *pharmacyName;

@end

然后在您的代码中,您将其称为self.pharmacyName. 它似乎与自动完成以及获取和设置一起工作得很好。此外,当您遇到线程安全问题时,非原子的强行为会派上用场。

于 2013-05-31T05:54:21.237 回答