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";
的值是正确的方法吗?
答案 0 :(得分:1)
通过将您的属性定义为强大,您可以保持对该对象的强引用。
如果有人给你一个NSMutableString
,请考虑一下会发生什么。你保留对它的引用,然后他们稍后改变它。你不再拥有他们给你的字符串。
如果您使用复制而不是强,则强制对象的副本(如果它们为您提供不可变对象,通常会将其优化掉),这意味着您始终保持你实际得到了什么。
答案 1 :(得分:0)
对于属性,我发现写[CB setName:@“my name”]更清楚。您需要在ClassB.m文件中使用@synthesize语句,以便编译器为您的属性创建一个getter和setter。
答案 2 :(得分:0)
这实际上是唯一的方法。 Class A
对Class B
的属性一无所知,因此必须在Class B
内实例化Class A
的对象才能访问其属性。