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 + \                     断点加入/取消

Command + Y                    运行调试
Command + Ctrl + Y           继续执行
F6                                     单步调试,下一步
F7                                     单步调试,进入
F8                                     单步调试,跳出

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.

未完待续。。。。。

 

posted @ 2013-03-06 19:39  NSDefaultRunLoopMode  阅读(920)  评论(0编辑  收藏  举报