您的位置:首页 > 移动开发 > Objective-C

Object-C入门一些东西

2013-03-06 19:39 323 查看
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。

[b] 5.NSLog的格式如下所示:[/b]

%@ 对象

%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位双字

[b] 6.设置断点快捷键:[/b]

Command + \ 断点加入/取消

Command + Y 运行调试
Command + Ctrl + Y 继续执行
F6 单步调试,下一步
F7 单步调试,进入
F8 单步调试,跳出
[b]7. Objective-C @property & @synthesize 使用[/b]
http://blog.csdn.net/lmhit/article/details/6546954
[b]8.object-c 变量使用 关键字[/b]

全局变量(extern)

在程序的开始处,没有在一个方法里面写了

int gMoveNumber=0;

那么我们说这个变量就是全局变量,也就是说在这个模块中的任何位置可以访问这个变量。

这样的变量也是外部全局变量,在其他文件中也可以访问它。但是访问的时候要重新说明下这个变量,说明的方法是:

extern int gMoveNumber;

当然我们也可以在声明的时候加上extern关键字。

extern int gMoveNumber=0;

这样的话在其他的类中使用还是需要重新说明一下了,而且这时候编译器会给出警告。

如果这个全局变量只是在自己的类中使用,或者其他的类使用的它情况也比较小,那么我们把它定义成第一种情况,如果在外部文件使用的也比较多的话,那么我们把它定义成第二种情况。

这种定义其实违背了封装性。

静态变量(static)

因为全局变量是全局的,影响封装,所以有时候要用静态变量。

static int gMoveNumber;

这是这个变量是这个类中的静态变量。如果不定义初始值的话为零。

如果静态变量定义在方法中,那么这个变量在方法执行完之后还是有效的,如果在第一次调用的时候改变了这个变量的值,那么在第二次调用的时候,这个变量的值是被改变过的值。

如果被定义在类中,那么这种改变也是有效的,就是作用域发生了改变。一个在方法中,一个在类中。

(以上是部分内容,全部内容:http://qing.weibo.com/tj/5d4a5ca3330010rw.html)

[b] 9.compare方法(comparer返回的三种值)[/b]

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.

未完待续。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: