您可以声明一个这样的变量。
情况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一起发布?
答案 0 :(得分:1)
由于设置的方式,在这种情况下差异相当混乱。
此外,它正在使用现在的旧做法。
新建议的做法(由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
的iVar。
您现在不再需要担心定义多个ivars和属性等...只需使用该属性就可以了。
属性str的示例setter方法看起来像这样......
- (void)setStr:(NSString*)str
{
_str = str;
}