从另一个类设置一个类的值

时间:2014-04-03 17:58:23

标签: objective-c

ClassA.m

ClassB *CB = [[ClassB alloc]init];
CB.name = @"my name";
[self presentViewController:CB animated:YES completion:nil];

ClassB.h

@interface ClassBViewController : UIViewController

@property (nonatomic, strong) NSString *name;

@end

此代码工作正常,但在ClassA中设置ClassA CB.name = @"my name";的值是正确的方法吗?

3 个答案:

答案 0 :(得分:1)

通过将您的属性定义为强大,您可以保持对该对象的强引用。

如果有人给你一个NSMutableString,请考虑一下会发生什么。你保留对它的引用,然后他们稍后改变它。你不再拥有他们给你的字符串。

如果您使用复制而不是,则强制对象的副本(如果它们为您提供不可变对象,通常会将其优化掉),这意味着您始终保持你实际得到了什么。

答案 1 :(得分:0)

对于属性,我发现写[CB setName:@“my name”]更清楚。您需要在ClassB.m文件中使用@synthesize语句,以便编译器为您的属性创建一个getter和setter。

答案 2 :(得分:0)

这实际上是唯一的方法。 Class AClass B的属性一无所知,因此必须在Class B内实例化Class A的对象才能访问其属性。