繁体   English   中英

具有属性和合成的实例变量,一个不带它们的实例变量-ARC

[英]Instance variable with property & synthesize and one without them - ARC

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

情况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一起发布?

在这种情况下,由于设置方式的不同,它们之间的差异相当混乱。

它还正在使用现在的旧做法。

建议的执行此操作的新方法(由Apple建议)是执行此操作。

MyClass.h

@interface MyClass : NSObject

@property (nonatomic, strong) NSString *str;

@end

MyClass.m

#import "MyClass.h"

@implementation MyClass

@end

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

这样做可以设置叫物业str叫伊娃_str

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

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

- (void)setStr:(NSString*)str
{
    _str = str;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM