【发布时间】:2014-03-18 08:21:10
【问题描述】:
我目前正在学习 Obj-C 以进行 iOS 编程,但有些概念让我感到困惑。具体来说,getter 和 setter 访问器。
我正在阅读一些关于它们的不同内容 - 一些人说它们是在您使用 @property 时自动创建的,无需手动设置,另一些人说您需要使用 @synthesize。
请查看下面代码中的 cmets。我对实际手动编码所需的内容以及调用该方法的正确方法感到困惑。
// SomeClass.h
#import <Foundation/Foundation.h>
@interface SomeClass : NSObject
@property (nonatomic, strong) NSString *firstName;
-(NSString *) firstName;
@end
// SomeClass.m
#import "SomeClass.h"
@implementation SomeClass
// DO I NEED THE CODE BELOW OR ARE THESE AUTO-CREATED?
// ****************************************************
-(NSString *) firstName {
return _firstName;
}
-(void) setFirstname:(NSString *) newValue {
_firstName = newValue;
}
// ****************************************************
@end
int main () {
@autoreleasepool {
SomeClass *aClass = [[SomeClass alloc] init];
// How would you set the first name?
aClass.firstName = @"Richard"; //Does this call setFirstName?
// OR
[aClass setFirstName:@"Richard"];
}
return 0;
}
【问题讨论】:
-
link 看看这个。它回答了一切
-
不是字符串属性通常应该定义为
copy,而不是strong。