Object-C入门一些东西
1.参看书籍:http://cagt.bu.edu/w/images/b/b6/Objective-C_Programming_Language.pdf
2.objective-c内存管理 (Memory Management)
http://hi.baidu.com/wangzhongz/item/9816e06e9f59570ca0cf0f9c
3.视频教程:
http://www.youku.com/playlist_show/id_4545842.html
4.object-c中区别于其他oop语言
a、Object-C中的成员变量使用了@public、@protected、@private作为访问修饰符,默认的是@protected(类访问和子类访问)。Object-C中只有成员变量有访问修饰符,类变量、类方法、成员方法是没有访问修饰符的,所有的方法都是@public,所有的类变量都是@private。
b、没有在@interface中声明的方法依然可以在@implementation中调用。这是由于object-c是动态语言一般情况下,都会提供h文件,所以在m文件中写h文件中没有的方法,别人是不会知道的,这相当于将方法变相的私有化。
c、#import"xxx"=#import<xxx>(系统头文件)+当前目录。
d、方法中的类型描述(返回值类型、参数类型)都必须使用()包围。
e、object-c中的类方法只能类调用。
f、以@end表示接口定义结束。与java不同的是java的类型定义使用{ }包围,而object-c中的{ }只包围成员变量,因此必须有个结束标志。
g、
Bool bi=8960;
If(bi==YES)
{
Printf(“YES”);
}
Else
{
Printf(“NO”);//BOOL是一个8位的整数,8960的低八位恰好全都是0。
//非零值未必是BOOL的YES,但0一定是NO.
}
h、Object-oriented programming is all about indirection.OOP uses indirection for accessing data,just as we did in the previous examples by employing variables,files,and arguments.----Learn Objective-C on the Mac 2nd Edition。
5.NSLog的格式如下所示:
- %@ 对象
- %d, %i 整数
- %u 无符整形
- %f 浮点/双字
- %x, %X 二进制整数
- %o 八进制整数
- %zu size_t
- %p 指针
- %e 浮点/双字 (科学计算)
- %g 浮点/双字
- %s C 字符串
- %.*s Pascal字符串
- %c 字符
- %C unichar
- %lld 64位长整数(long long)
- %llu 无符64位长整数
- %Lf 64位双字
6.设置断点快捷键:
Command + \ 断点加入/取消
7. Objective-C @property & @synthesize 使用
http://blog.csdn.net/lmhit/article/details/6546954
8.object-c 变量使用 关键字
全局变量(extern)
在程序的开始处,没有在一个方法里面写了
int gMoveNumber=0;
那么我们说这个变量就是全局变量,也就是说在这个模块中的任何位置可以访问这个变量。
这样的变量也是外部全局变量,在其他文件中也可以访问它。但是访问的时候要重新说明下这个变量,说明的方法是:
extern int gMoveNumber;
当然我们也可以在声明的时候加上extern关键字。
extern int gMoveNumber=0;
这样的话在其他的类中使用还是需要重新说明一下了,而且这时候编译器会给出警告。
如果这个全局变量只是在自己的类中使用,或者其他的类使用的它情况也比较小,那么我们把它定义成第一种情况,如果在外部文件使用的也比较多的话,那么我们把它定义成第二种情况。
这种定义其实违背了封装性。
静态变量(static)
因为全局变量是全局的,影响封装,所以有时候要用静态变量。
static int gMoveNumber;
这是这个变量是这个类中的静态变量。如果不定义初始值的话为零。
如果静态变量定义在方法中,那么这个变量在方法执行完之后还是有效的,如果在第一次调用的时候改变了这个变量的值,那么在第二次调用的时候,这个变量的值是被改变过的值。
如果被定义在类中,那么这种改变也是有效的,就是作用域发生了改变。一个在方法中,一个在类中。
(以上是部分内容,全部内容:http://qing.weibo.com/tj/5d4a5ca3330010rw.html)
9.compare方法(comparer返回的三种值)
NSString *astring01 = @"This is a String!";
NSString *astring02 = @"This is a String!";
BOOL result = [astring01 compare:astring02] = = NSOrderedSame;
NSLog(@"result:%d",result);
//NSOrderedSame判断两者内容是否相同
NSString *astring01 = @"This is a String!";
NSString *astring02 = @"this is a String!";
BOOL result = [astring01 compare:astring02] = = NSOrderedAscending;
NSLog(@"result:%d",result);
//NSOrderedAscending判断两对象值的大小(按字母顺序进行比较,astring02大于astring01为真)
NSString *astring01 = @"this is a String!";
NSString *astring02 = @"This is a String!";
BOOL result = [astring01 compare:astring02] = = NSOrderedDescending;
NSLog(@"result:%d",result);
//NSOrderedDescending判断两对象值的大小(按字母顺序进行比较,astring02小于astring01为真)
10.基本数据类型的封装类NSNumber
http://qz.qq.com/58472399/blog?uin=58472399&vin=0&blogid=1293590196
11.object-c NSString 和 NSMutableString区别
NSString相当于一个const char* 不可以改变。
而 NSMutableString相当于 char* 可以改变内部的内容。
NSArray创建的是不可改变的数组,也就是其个数不可改变,不能增加也不能减少。
NSMutableArray可以用来动态改变数组内容。
读取容器中的内容
NSEnumerator* enumerator = [array objectEnumerator];
id thingie;
while (thingie = [enumerator nextObject])
{
//handle
}
快速枚举
for (NSString* string in array)
{
//handle string.
}
[NSNull null]
来代替其中的空值属性。
12.
未完待续。。。。。