A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. NSLog(@"我的姓名是 %@ ",name);
复制代码
运行的结果是:
  1. 2015-05-10 17:31:51.201 ObjectC[2058:115020] 我的姓名是 %@
  2. 2015-05-10 17:31:51.203 ObjectC[2058:115020] person's name is lewis
  3. 2015-05-10 17:31:51.204 ObjectC[2058:115020] perspn's name is Jack
复制代码
  1. NSLog(@"person's name is %@",name);
复制代码
运行的结果是:
  1. 2015-05-10 17:35:05.192 ObjectC[2099:116310] person's name is lewis
  2. 2015-05-10 17:35:05.194 ObjectC[2099:116310] person's name is lewis
  3. 2015-05-10 17:35:05.194 ObjectC[2099:116310] perspn's name is Jack
复制代码
为什么第一次打印出来的是‘%@’而第二次打印出来的却是具体的名字呢?二者什么区别
main.m文件:
  1. //
  2. //  main.m
  3. //  ObjectC
  4. //
  5. //  Created by zxy on 15/5/10.
  6. //  Copyright (c) 2015年 zxy. All rights reserved.
  7. //

  8. #import <Foundation/Foundation.h>
  9. #import "Person.h"

  10. int main(int argc, const char * argv[]) {

  11.     //创建person的实例对象
  12.     Person *person = [[Person alloc] initWithName:@"lewis"];
  13.     //给person发送实例消息sayHi
  14.     [person sayHi];//整行应该改为[person sayHi];
  15.    
  16.     //打印当前person实例对象的姓名是什么
  17.     NSLog(@"person's name is %@",[person getName]);
  18.    
  19.     //修改当前person实例对象的姓名,修改成Jack
  20.     [person setName:@"Jack"];
  21.    
  22.     //打印当前实例对象的姓名
  23.     NSLog(@"perspn's name is %@",[person getName]);
  24.    
  25.     /*
  26.     @autoreleasepool {
  27.         // insert code here...
  28.         NSLog(@"Hello, World!");
  29.     }
  30.      */
  31.    
  32.     return 0;
  33. }
复制代码
Person.h文件:
  1. //
  2. //  Person.h
  3. //  ObjectC
  4. //
  5. //  Created by zxy on 15/5/10.
  6. //  Copyright (c) 2015年 zxy. All rights reserved.
  7. //

  8. #import <Foundation/Foundation.h>

  9. //类的接口部分
  10. @interface Person : NSObject
  11. {
  12.     //添加当前类的属性
  13.     //字符串类型
  14.     NSString *name ;//姓名
  15.    
  16. }
  17. //添加初始化方法
  18. - (id)initWithName:(NSString *)_name;

  19. - (void)sayHi;

  20. //设置器,setter
  21. - (void)setName:(NSString *)_name;

  22. //设置访问器 getter
  23. - (NSString *)getName;

  24. @end
复制代码
Person.m文件:
  1. //
  2. //  Person.m
  3. //  ObjectC
  4. //
  5. //  Created by zxy on 15/5/10.
  6. //  Copyright (c) 2015年 zxy. All rights reserved.
  7. //

  8. #import "Person.h"

  9. @implementation Person

  10. - (id)initWithName:(NSString *)_name
  11. {
  12.     //原始初始化
  13.     self = [super init];
  14.     //成功之后
  15.     if(self!=nil){
  16.         name = _name;
  17.     }
  18.     //返还当前对象
  19.     return self;
  20. }

  21. //设置器,setter
  22. - (void)setName:(NSString *)_name
  23. {
  24.     name = _name;
  25. }

  26. //设置访问器 getter
  27. - (NSString *)getName
  28. {
  29.     return name;
  30. }


  31. -(void)sayHi
  32. {
  33.     //将字符串打印到控制台输出,类似于printf();
  34.     NSLog(@"person's name is %@",name);
  35. }


  36. @end
复制代码


65B0AE17-3FB3-41F7-8D8C-BC52907B66F3.png (45.06 KB, 下载次数: 3)

65B0AE17-3FB3-41F7-8D8C-BC52907B66F3.png

7 个回复

正序浏览
看的有点头晕,不明觉厉。。。
回复 使用道具 举报
不用看的%你使用的是中文的字符,对比一下

点评

谢谢,我不够细心  发表于 2015-5-14 12:35
回复 使用道具 举报
本帖最后由 mony 于 2015-5-13 13:17 编辑

我认为是你的getname那里是不是有问题...反正看的有些别扭,感觉应该返回的是_name,当然是我的想法,不一定正确

点评

谢谢,说说想法正确与否我们再议,能说出来就是好的,毕竟旁观者清嘛  发表于 2015-5-14 12:33
回复 使用道具 举报
NSLog(@"我的姓名是 %@ ",name);
是不是%是中文的百分号啊,看你黏贴的是中文的。

点评

那可能是没细心  发表于 2015-5-13 11:28
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马