【发布时间】:2018-05-06 17:01:35
【问题描述】:
我开始使用Objective C,但我无法理解基本的评估本身。 下面是我的代码
@interface
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
NSString *_str;
}
-(void) print;
-(id) init;
@end
@实现
#import "Person.h"
@implementation Person
-(id) init{
self=[super init];
char c[50];
scanf("%s",c);
NSString *xyz=[NSString stringWithUTF8String:c];
NSLog(@"%p",xyz);
_str=xyz;
xyz=@"omg";
NSLog(@"%p",_str);
return self;
}
-(void) print{
NSLog(@"%p",_str);
NSLog(@"%@",_str);
}
@end
main.m
#import <Foundation/Foundation.h>
#import "Person.h"
#import <stdio.h>
int main(int argc, const char * argv[]) {
Person *ob=[[Person alloc] init];
[ob print];
return 0;
}
代码很简单:
- 从控制台获取输入并将其分配给局部变量
xyz - 将
xyz分配给实例变量_str - 改变局部变量
xyz的值
由于xyz 和_str 基本上都是指针,我认为更改xyz 的值也会更改_str 的值。但是我看不到,即使两个变量都指向同一个位置!。有人可以解释一下赋值是如何工作的,为什么更新xyz不会影响_str。
输出:
My_console_input
2018-05-06 22:28:54.714327+0530 learn_objc1[8109:135801] 0x10051ceb0
2018-05-06 22:28:54.714833+0530 learn_objc1[8109:135801] 0x10051ceb0
2018-05-06 22:28:54.714878+0530 learn_objc1[8109:135801] 0x10051ceb0
2018-05-06 22:28:54.715014+0530 learn_objc1[8109:135801] My_console_input
Program ended with exit code: 0
【问题讨论】:
-
你的目标是什么?如果是学习写 iOS 或者 macOS 应用,学习 objc 有更好的起点。这看起来像是来自一套非常古老的学习材料。
标签: objective-c