0

你可以像这样声明一个变量。

情况1:

@interface MyClass : NSObject
{
    NSString *str;
}

@end

另外,如果你想设置它的属性,你可以做

案例2:

@interface MyClass : NSObject
{
    NSString *str;
}
@property (nonatomic, strong) NSString *str;

@end

在.m中,

@synthesize str;

我对案例 1 和案例 2 之间差异的理解是,当另一个类实例化此类时,可以从另一个类访问案例 2 中的综合变量和属性变量。

案例 1 和案例 2 之间还有哪些其他区别?假设这些变量仅在其 .m 文件中使用。您设置“str”属性的事实可能会有所不同,但是如何?如果您不设置属性,它们将如何与 ARC 一起发布?

4

1 回答 1

1

在这种情况下,由于设置方式的不同,这些差异相当令人困惑。

它也在使用现在的旧做法。

这样做的新建议方法(Apple 建议)是这样做......

我的类.h

@interface MyClass : NSObject

@property (nonatomic, strong) NSString *str;

@end

我的班级.m

#import "MyClass.h"

@implementation MyClass

@end

你不再需要@synthesize,因为 Xcode(从 4.5 开始)会自动为你生成这些。

这样做会设置名为的属性str和名为的 iVar _str

您现在不再需要担心定义多个 ivars 和属性等...只需使用该属性即可。

属性 str 的示例 setter 方法如下所示...

- (void)setStr:(NSString*)str
{
    _str = str;
}
于 2013-04-12T14:50:17.763 回答