【发布时间】:2021-01-21 06:08:35
【问题描述】:
我正在尝试从我的int main() 以不同的方式在XYZPerson 中初始化属性firstName 和lastName。 (我正在学习 OC 并探索不同的初始化值的方法)
但是,NSLog 始终为 firstName 返回 null。我知道有很多与我类似的问题,但几乎所有问题都倾向于特定问题,而不是语言语法本身。
#import <Foundation/Foundation.h>
#import "XYZShoutingPerson.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
XYZPerson *somePerson = [[XYZPerson alloc] init];
NSString *firstName = [somePerson firstName];
[somePerson setFirstName:@"Jonny"];
[somePerson setLastName:@"Appleseed"];
NSLog(@"%@ %@", firstName, [somePerson lastName]); // prints ```(null) Appleseed```
}
return 0;
}
@interface XYZPerson : NSObject
@property NSString *firstName;
@property NSString *lastName;
- (id)init;
- (id)initWithFirstName:(NSString *)aFirstName lastName:(NSString *)aLastName;
- (void)saySomething:(NSString *)greeting;
@end
我刚刚开始学习 Objective-C。我知道这很可能是一个非常愚蠢的错误,所以请不要对我太苛刻......谢谢!
【问题讨论】:
-
您访问
firstName属性并将其存储在一个局部变量中,然后再设置该属性。所以firstName局部变量是null。 -
是的,成功了!但我想知道为什么在设置它不起作用之前将它存储为本地属性?
firstName指向的地址不还是一样吗?
标签: ios objective-c xcode