------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流!
第一讲 类方法与对象方法的比较
1、对象方法:
以 - 号开头
可以使用成员变量
用对象调用对象方法
在实例方法中可以是用类的成员变量
对象方法可以调用当前对象或者其他对象方法,调用其他对象方法是通过将对象作为参数传入方法的。其中:
1) 当前对象方法中创建对象(可是是当前类的对象,也可以是其它类的对象),使用新创建的对象调用对象方法
2)可以使用self指针
3)对象作为方法的参数传递过来可以使用传递过来的对象调用指针。
2、类方法:
以+开头
不能使用成员变量
用类调用类方法
在类方法中可以调用其他的类方法
1)可以直接使用本类类名(或者其它类名)调用类方法
2)可以使用self
类方法可以调用对象方法(通过将对象作为参数传入方法),还可以创建一个对象。
类方法有一个陷阱,就是调用其本身会造成死循环。
第二讲 C与OC中计算字符串不一样的地方
在C中我们队字符串长度的计算用的是strlen(\0也是一个字符),是一个固定的方法,需要引入#string 的头文件,当然sizeof也可以,但是它不是一个方法。在OC中计算NSString 字符串长度,字符串是纯英文的:
NSString *s1=@"love";
NSUInteger Len=[s1 lenght];//输出的值是4,在NSUInteger中字符串的长度是没有/0的
其实在这里可以说NSUInteger是一种类型,申明一次之后就可以直接调用了。
字符串是纯中文的:
NSString *s2=@"人们";
len=[s2 length];//输出值是2
中英文字符串所占字节数在OC中是一样的,都只占一个字节,这是和C中完全不一样的,在C中,中文的一个字要占三个字节。
第三讲 匿名类(匿名对象)的概念及其使用
个人理解,匿名类应该说成是匿名对象,因为[类名 new]正常情况下是要有一个对象的,而这里所说的匿名其实就是把这个对象给丢弃了,就是不要这个对象名了,实际上这个对象还是在的,只是没有名字了而已。
匿名类的两种用法:
使用匿名类访问实例变量,例如有一个Car类:
[Car new]->_speed=160;
NSLog(@"_speed=%d", [Car new]->_speed);//实际上真正输出的是0,并不是160
其实原因在于使用匿名类访问实例变量只能访问一次,以后的访问都是在访问新的空间,也就是输出时的[Car new]申请的空间。
使用匿名的类可以调用方法,例如有一个Car类,一个stop方法:
[[Car new] stop];
这里要说的一点,[Car new]可以等价于[[Car alloc] init]。