OC NSString/字符串
1.创建NSString对象
2.调用字符串的方法
(NSString )capitalizedString;
(unichar)characterAtIndex:(NSUInteger)index;
(double)doubleValue;
(float)floatValue;
(BOOL)hasPrefix:(NSString )aString;
(BOOL)hasSuffix:(NSString )aString;
(id)initWithFormat:(NSString )format …;
(NSInteger)integerValue;
(BOOL)isEqualToString:(NSString )aString;
(NSUInteger)length;
(NSString )lowercaseString;
(NSRange)rangeOfString:(NSString )aString;
(NSString )stringByAppendingFormat:(NSString )format …;
(NSString )stringByTrimmingCharactersInSet:(NSCharacterSet )set;
(NSString )substringFromIndex:(NSUInteger)anIndex ;
差异:java中对象调方法,一般是
|
|
而在oc中对象调方法,一般是
|
|
例
|
|
OC struct/结构
1.定义一个结构
|
|
差异:oc的结果很像java中的bean类,通常会这样写
|
|
2.作为函数参数的结构
|
|
3.指向结构的指针
·定义结构体指针
|
|
|
|
|
|
例
|
|
位域
位域允许在一个结构中的数据的包装。
也就是添加该字段所占的长度
|
|
预处理器
oc的井号(#)开头的所有预处理命令,和java的其实很像,如#import就类似于java的import类库,还有#if,#else,等等,
预定义宏
预定义宏不应该直接被修改,就是系统提供的特定方法,或者说是特定变量,如DATE, TIME等,这些方法就像java的getDate(),System.currentTimeMillis()等,都是系统提供的方法。
预处理运算符
1.宏延续()
宏通常必须在一个单一的行,宏延续运算符用于继续宏的一行
2.Stringize(#)
在宏定义内使用时,一个宏参数转换成一个字符串常量
3.标记粘贴(##)
标记粘贴运算符在宏定义内结合两个参数,
4.defined()运算符
#defined定义一个标识符,如果指定的标识符被定义,该值是真,如果符号没有定义,这个值是false
5.参数化宏
|
|
带参数的宏,必须使用才可以使用#define指令定义。
typedef
type关键字,可以用一个新的名字给一个类型,如
|
|
类型转换
将值从一个类型到另一个显式地使用转换运算符如下:
|
|
并且在OC中,一般使用CGFloat做浮点运算。
|
|
该方法非常类似于java的强转
正常的算术转换
|
|
类似于java的向上转型和向下转型(强转)的概念。
日志处理
使用NSLog方法
####错误处理
在OC中错误处理由Foundation框架的NSError类提供。
NSError对象包括
1.域名:错误于可以是一个预定义的NSError域或任意字符串描述一个自定义域和域必须为nil。
2.代码:错误的错误代码。
3.用户信息:用户信息字典错误和userInfo可能为nil。
|
|
####OC 类 & 对象
#####特点
1.类定义在两个不同的部分,即@interface和@implementation。
2.几乎所有东西都以对象的形式。
3.对象接收消息和对象通常被称为接收器。
4.对象包含实例变量。
5.对象和实例变量的范围。
6.类隐藏对象的实现。
7.属性是用来提供访问其他类的类的实例变量。
java的Object类是所有类的超类,而oc中NSObject是所有类的超类,
#####对象分配和初始化
类对象的创建声明
|
|
例
|
|
#####属性
属性,确保类的实例变量可以在类的外部访问。
1.属性由@property开始,说着说着一个关键字
2.在内部创建getter,setter方法
|
|
同样的,在java中,我们会将对象的属性写成私有的,然后通过getter和setter方法来获取所需的属性。
|
|
####继承
在java中类与类只允许单继承,接口与接口允许多继承,但是在oc中,是允许多重继承,也就是说,它只能由一个基类,但允许多层次的继承。
通过:表示继承,也是同样的子类可以继承父类的方法和属性,并且能新增自己特有的属性,及方法。
####多态性
java的三大特性:封装,继承,多态,很类似的oc也有这几大特性,只是稍微有点不同罢了。
|
|
java和oc都符合oop的多态思想,即他们可以有共同的父类,并且都具备父类的属性和方法,但是他们也有各自特有的属性及方法,如猫,狗,都是动物,但是猫会抓老鼠,狗会看家,这就是多态的思想。
数据封装
数据封装,很熟悉,基本上为了代码的复用性,我们都会选择将数据进行封装。
|
|
就如上栗子所示,当我们要多次调用同一个方法时,那就将该功能封装起来,方便复用,以及美观。