OC概念补充(结构体作为对象属性、多文件开发)

description方法

问题1:使用%@打印一个对象,输出的是什么内容?%@的原理是什么?

答:

  • %@是用来打印对象的, description方法默认返回对象的描述信息(默认实现是返回类名和对象的内存地址). 其实%@的本质是用于打印字符串.
  • 只要利用%@打印某个对象, 系统内部默认就会调用父类的description方法 调用该方法, 该方法会返回一个字符串, 字符串的默认格式 <类的名称: 对象的地址>

问题2:重写description方法注意点?

答:

  • 如果在description方法中利用%@输出self会造成死循环
  • 建议: 在description方法中尽量不要使用self来获取成员变量 因为如果你经常在description方法中使用self, 可能已不小心就写成了 %@, self

 

问题1:OC中%@ 是做什么用的?

答:输出OC的字符串使用%@, %@就专门用于输出对象类型的

问题2:如何计算字符串的长度?

答:OC中调用length方法,计算字符的个数, 而不是占用的字节数

结构体作为对象属性

问题:如何将作为属性的结构体进行初始化?

答:

typedef struct {
    int year;
    int month;
    int day;
} Date;

结构体作为对象属性
//方法一:强制转换
stu->_birthday = (Date){1986, 1, 15};

//方法二:定义一个新的结构体,给d赋值,将d赋值给_birthday
Date d = {1986, 1, 15};
stu->_birthday = d;

//方法三:分别赋值
stu->_birthday.year = 1986;
stu->_birthday.month = 1;
stu->_birthday.day = 15;

 

OC多文件开发

问题1:为什么要使用多文件?

答:

一个iOS项目可能会有多个人开发,如果多个人同时修改一个文件,那么就很可能会产生冲突,比如这个增加一个方法,那个人把这方法删掉了。另外就是当把多个人写功能合并起来的时候,也非常困难,写到一个文件中,无法顺畅的进行团队合作

问题2:OC中如何进行多文件开发?

答:

  • 在工作中,通常把不同的类放到不同的文件中,每个类的声明和实现分开
  • 声明写在.h头文件中,
  • 实现写在相应的.m文件中去,
  • 类名是什么,文件名就是什么

问题3:使用多文件开发有什么好处?

答:

  • 显著提高团队协作的效率
  • 提高程序的开发速度
  • 提高程序的可维护性
  • 提高代码的可读性

匿名对象

问题1:什么是匿名的对象?匿名对象和之前所用的对象有什么区别?

答:匿名就是没有名字, 匿名对象就是没有名字的对象.

  1. 有名字的对象
    // 只要用一个指针保存了某个对象的地址, 我们就可以称这个指针为某个对象
    // 称p为Person对象
    Person *p =[Person new];
    p->_age = 30;
    p->_name= @"lnj";
    [p say];
  2. 没有名字的对象
    // 无论有没有名字, 只要调用new方法都会返回对象的地址
    // 每次new都会新开辟一块存储空间
    [Person new]->_age = 30;
    [Person new]->_name = @"LMJ";
    [[Person new] say];

问题2:匿名对象应用场景?

答:

  1. 当对象只需要使用一次的时候就可以使用匿名对象
  2. 匿名对象可以作为方法的参数(实参)

 

posted @ 2015-11-26 15:26  a滴答  阅读(860)  评论(0编辑  收藏  举报