黑马程序员技术交流社区

标题: OC中定义问题 [打印本页]

作者: 学以致用表初衷    时间: 2016-2-5 11:39
标题: OC中定义问题
你好。我想声明一个结构体 或者一个枚举
  1. typedef enum {man,woman,yao}Sex;
  2. @interface Person : NSObject
  3. {
  4.     NSString *_pName;
  5.     Sex *_sex;//<span style="line-height: 30.8px; background-color: rgb(255, 255, 255);">这里我Sex *sex; 和Sex sex; 有什么区别???</span>
  6.     int _age;
  7.     float _high;
  8.     Goods *_food;

  9. }
  10. @property(nonatomic,assign)int age;
  11. @property(nonatomic,assign) float high;
  12. @property(nonatomic,retain)NSString * name;
  13. @property(nonatomic,assign)Sex * sex;
复制代码
还有定义结构体的时候 如果想用SET方法定义一个变量的时候。
  1. #import <Foundation/Foundation.h>
  2. typedef  struct{

  3.     int year;
  4.     int month;
  5.     int day;

  6. }ProduceDate;



  7. @interface Goods : NSObject
  8. {

  9.     NSString *_name;
  10.     float _price;
  11.     float _weight;
  12.     NSString *_picture;
  13.     ProduceDate* _birth;//这里是不是必须就要加* 要不然主函数就无法定义变量值???
  14.     NSString * _expireDa;
  15.    
  16. }
  17. @property(nonatomic,retain) NSString * name;
  18. @property(nonatomic,assign) float price;
  19. @property (nonatomic,assign)float weight;
  20. @property(nonatomic,retain) NSString * picture;
  21. @property(nonatomic,assign) ProduceDate* birth;


  22. @end
复制代码





作者: 韦德460    时间: 2016-2-5 13:45
Sex *_sex; 和Sex _sex; 有什么区别???
答:不需要加*,多此一举(在oc中只有对象前面才加*)
ProduceDate* _birth; 这里也一样不需要*,多此一举

主函数中想给_birth赋值的话
  1. #import <Foundation/Foundation.h>

  2. typedef  struct{
  3.    
  4.     int year;
  5.     int month;
  6.     int day;
  7.    
  8. }ProduceDate;

  9. @interface Goods : NSObject
  10. {
  11.    
  12.     NSString *_name;
  13.     float _price;
  14.     float _weight;
  15.     NSString *_picture;
  16.     ProduceDate _birth;//这里是不是必须就要加* 要不然主函数就无法定义变量值???
  17.     NSString * _expireDa;
  18.    
  19. }
  20. @property(nonatomic,copy) NSString * name;
  21. @property(nonatomic,assign) float price;
  22. @property (nonatomic,assign)float weight;
  23. @property(nonatomic,copy) NSString * picture;
  24. @property(nonatomic,assign) ProduceDate birth;

  25. @end

  26. @implementation Goods

  27. @end



  28. int main(int argc, const char * argv[]) {
  29.     @autoreleasepool {
  30.         
  31.         Goods *good = [Goods new];
  32.         [good setBirth:(ProduceDate){1999,9,9}];
  33.         
  34.         NSLog(@"%d-%d-%d",[good birth].year,[good birth].month,[good birth].day);
  35.         
  36.     }
  37.     return 0;
  38. }
复制代码





作者: 学以致用表初衷    时间: 2016-2-5 14:16
韦德460 发表于 2016-2-5 13:45
Sex *_sex; 和Sex _sex; 有什么区别???
答:不需要加*,多此一举(在oc中只有对象前面才加*)
ProduceDa ...

非常非常感谢。
但是我还是有个疑问
我如果在结构体里 声明的时候 我用
produceDate * _birth.
这样的话 我主函数定义变量的时候 就可以用另一种方法了呀。G.birth->year =100;G.birth->month.
有没有规定 必须使用哪一种??
作者: 韦德460    时间: 2016-2-5 14:27
学以致用表初衷 发表于 2016-2-5 14:16
非常非常感谢。
但是我还是有个疑问
我如果在结构体里 声明的时候 我用

没有规定!!!
作者: 学以致用表初衷    时间: 2016-2-5 14:30
韦德460 发表于 2016-2-5 14:27
没有规定!!!

谢谢。谢谢~~~
作者: 韦德460    时间: 2016-2-5 14:36
学以致用表初衷 发表于 2016-2-5 14:30
谢谢。谢谢~~~

不用谢不用谢,麻烦帮我去顶一下贴
长沙1220iOS基础班王锐,生活的理想就是为了理想的生活!
http://bbs.itheima.com/thread-275739-1-1.html
(出处: 黑马程序员IT技术论坛)
作者: 学以致用表初衷    时间: 2016-2-5 14:47
韦德460 发表于 2016-2-5 14:36
不用谢不用谢,麻烦帮我去顶一下贴
长沙1220iOS基础班王锐,生活的理想就是为了理想的生活!
ht ...

你好我想问一下。。我准备 后付费 进入就业办。。流程怎么样??难吗。。??只要看了视频 知识掌握了 是不是都没什么问题??
作者: 韦德460    时间: 2016-2-5 16:51
学以致用表初衷 发表于 2016-2-5 14:47
你好我想问一下。。我准备 后付费 进入就业办。。流程怎么样??难吗。。??只要看了视频 知识掌握了 是 ...

只要你学的好,黑马不会不要你的
作者: chensc    时间: 2016-2-6 20:16
学习学习!




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