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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Moebius 于 2014-7-19 23:57 编辑
  1. #import <Foundation/Foundation.h>
  2. #import "Student.h"

  3. int main(int argc, const char * argv[])
  4. {
  5.     Student *p1 = [[Student alloc] initWithName:@"Jim" andAge:18 andScore:78];
  6.    
  7.    
  8. //    Student *p2 = [[Student alloc] initWithName:@"Jack" andAge:19 andScore:82];
  9. //   
  10. //    Student *p3 = [[Student alloc] initWithName:@"May" andAge:17 andScore:99];
  11. //   
  12. //    Student *p4 = [[Student alloc] initWithName:@"Lily" andAge:18 andScore:60];
  13. //   
  14. //    Student *p5 = [[Student alloc] initWithName:@"Candy" andAge:18 andScore:75];
  15.    
  16.    
  17.    
  18.    
  19.     NSLog(@"%@",p1);
  20.    
  21.    
  22.    
  23.    
  24. //    [p1 release];
  25. //    [p2 release];
  26. //    [p3 release];
  27. //    [p4 release];
  28. //    [p5 release];
  29.    
  30.     return 0;
  31. }

  32. #import <Foundation/Foundation.h>

  33. @interface Student : NSObject
  34. {
  35.     int _age;
  36.     int _score;
  37.     NSString *_name;
  38. }
  39. //年龄 分数 姓名的get  set
  40. -(void)setAge:(int)age;
  41. -(int)age;

  42. -(void)setScore:(int)score;
  43. -(int)score;

  44. -(void)setName:(NSString *)name;
  45. -(NSString *)name;

  46. //快速构造器的声明
  47. -(id)initWithName:(NSString *)name andAge:(int)age andScore:(int)score;


  48. @end


  49. #import "Student.h"

  50. @implementation Student

  51. //年龄 分数 姓名的set get的实现
  52. -(void)setAge:(int)age
  53. {
  54.     _age = age;
  55. }
  56. -(int)age
  57. {
  58.     return _age;
  59. }


  60. -(void)setScore:(int)score
  61. {
  62.     _score = score;
  63. }
  64. -(int)score
  65. {
  66.     return _score;
  67. }


  68. -(void)setName:(NSString *)name
  69. {
  70.     if ( name != _name)
  71.     {
  72.         [_name release];
  73.         _name = [name retain];
  74.     }
  75. }
  76. -(NSString *)name
  77. {
  78.     return _name;
  79. }

  80. //输出整个学生信息
  81. - (NSString *)description
  82. {
  83.     return [NSString stringWithFormat:@"My Name Is %@,Age Is %d.Score Is %d.",_name,_age,_score];
  84. }

  85. //快速构造器的实现
  86. -(id)initWithName:(NSString *)name andAge:(int)age andScore:(int)score
  87. {
  88.     if ( self = [super init])
  89.     {
  90.         _name = name;
  91.         _age = age;
  92.         _score = score;
  93.     }
  94.     return  self;
  95. }
  96. @end
复制代码



ndefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_Student", referenced from:
      objc-class-ref in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)


网上说是用第三方框架什么的,但是我什么都没用啊,这个怎么回事?

4 个回复

倒序浏览
为嘛你的成员变量也要relsase?
回复 使用道具 举报
温天恩 发表于 2014-7-19 23:21
为嘛你的成员变量也要relsase?

name是字符串,在OC里是对象。所以要release
回复 使用道具 举报
为什么我换个文件,同样的代码又可以了?这是为什么?
回复 使用道具 举报
Moebius 发表于 2014-7-19 23:54
name是字符串,在OC里是对象。所以要release

假如你初始化NSString时候没有用alloc,就不用release。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马