黑马程序员技术交流社区

标题: OC类的设计的问题 [打印本页]

作者: 执着的土豆    时间: 2014-4-25 12:57
标题: OC类的设计的问题
本帖最后由 执着的土豆 于 2014-4-25 14:28 编辑
  1. <div class="blockcode"><blockquote>#import <Foundation/Foundation.h>
  2. @interface Dog:NSObject
  3. {
  4. @public
  5.    int DogWeight;
  6. }
  7. -(void) DogEat;
  8. -(void)DogMessage;
  9. @end
  10. @implementation Dog
  11. -(void)DogEat
  12. {
  13.     DogWeight+=1;
  14.     NSLog(@"狗吃完这顿的体重是%d",DogWeight);
  15. }
  16. <font color="#ff0000">-(void)DogMessage</font>
  17. {
  18.     NSLog(@"狗的名字是:旺财,狗的体重是%d",DogWeight);
  19. }
  20. @end
  21. @interface Student:NSObject
  22. {
  23. @public
  24.     Dog *dog;
  25. }
  26. -(void)weigou;
  27. @end
  28. @implementation Student
  29. -(void)weigou
  30. {
  31.     [dog DogEat];
  32. }
  33. @end
  34. int main()
  35. {
  36.     Student *S=[Student new];
  37.     Dog *D=[Dog new];
  38.     S->dog=D;
  39.     //[S->dog DogEat] <font color="#ff0000">//问题1:这样写不报错,但是也不会输出什么,这是为嘛?</font>
  40.     [S weigou];
  41. <font color="#ff0000">    //问题2:在不增加student里面的方法的前提下,能不能调用实例S所指向的DogMessage方法,输出狗的信息?</font>
  42.     return 0;
  43. }
复制代码


问题3:  这个程序敲完,运行,改掉错误之后,编译器会出现以下错误,何解?
MacdeMacBook-Pro:Test mac$ cc 10-OC习题1.m
Undefined symbols for architecture x86_64:
  "_NSLog", referenced from:
      _main in 10-OC习题1-f1cb02.o
  "_OBJC_CLASS_$_NSObject", referenced from:
      _OBJC_CLASS_$_Car in 10-OC习题1-f1cb02.o
  "_OBJC_METACLASS_$_NSObject", referenced from:
      _OBJC_METACLASS_$_Car in 10-OC习题1-f1cb02.o
  "___CFConstantStringClassReference", referenced from:
      CFString in 10-OC习题1-f1cb02.o
  "__objc_empty_cache", referenced from:
      _OBJC_METACLASS_$_Car in 10-OC习题1-f1cb02.o
      _OBJC_CLASS_$_Car in 10-OC习题1-f1cb02.o
  "_objc_msgSend", referenced from:
      _main in 10-OC习题1-f1cb02.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
还希望各位高手给予解惑,感激不尽。



作者: 执着的土豆    时间: 2014-4-25 14:06
马凯文 发表于 2014-4-25 13:21
问题一:我什么都没有动,正常运行,见图
问题二:Dog类是Student的一个属性,通过Student可以访问Dog的所 ...

将相应的出现错误的.m文件,加入到build phases中的compile sources中就可以,我还是没找到build phases在哪里,网站上那个图片我都不知道他开的什么软件或者哪个路径也没有写。现在我发现不光是那个文件运行出现那个问题,所有的.m文件运行都出现那样的结果。。     还希望说的详细一点。现在我连编译都不行了。      
作者: 执着的土豆    时间: 2014-4-25 14:27
马凯文 发表于 2014-4-25 13:21
问题一:我什么都没有动,正常运行,见图
问题二:Dog类是Student的一个属性,通过Student可以访问Dog的所 ...

解决了, 昨天晚上学的太晚了,可能代码写错了。  按照你写的可以调出DogMessage方法。  第三个问题,我解决了,找了另一个帖子改了下。 非常感谢!  




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2