不积跬步,无以至千里;不积小流,无以成江海。----荀子
收集学习ios中的小知识点,每天进步一点点。
(一)@class和 #import
class:只声明类,不会引入类文件,加快编译速度,防止类相互import出错;在m中仍然需要import整个类文件。
import导入整个类文件,在需要使用类中的变量、函数和协议的时候需要使用。
(二)静态变量static、全局变量extern、局部变量、实例变量
static:为整类而非单个对象使用,隐藏封装在类中,对外不可见。
静态变量的优点:
1、节省内存。静态变量只存储一处,但供所有对象使用。
2、它的值是可以更新的。
3、可提高时间效率。只要某个对象对静态变量更新一次,所有的对象都能访问更新后的值。
extern:在方法外部定义的变量,作用域是整个源程序。全局变量不能在多个m文件中定义。
局部变量:在方法中定义的变量,作用域是方法内。
实例变量:在类文件方法外定义
(三)NSArray和NSMutableArray
首先,NSArray只能存储Objective-C 对象,而不能存储C语言中的基本数据类型,比如:int,flot,指针等。 在使用NSArray时,需特别注意,必须以nil
结尾,以此来代表结束。
NSArray 创建的是静态数组,一旦创建之后,就再也不能添加和删除数组中的对象了,只能替换。
NSMutalbeArray 创建的是动态数组,可随意添加或删除数组中的元素。
(四)bool、BOOL和Boolean的区别
在objc.h文件中如下定义
<span style="font-family:SimSun;font-size:18px;">typedef signed char BOOL; // BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C" // even if -funsigned-char is used. #define OBJC_BOOL_DEFINED #define YES (BOOL)1 #define NO (BOOL)0</span>
BOOL是个signed char类型,Boolean是unsigned char类型,bool是个整型。在oc框架中都是用BOOL,其他大部分地方是用bool。oc编程中常用BOOL。