zoukankan      html  css  js  c++  java
  • ObjectC入门一些东西

    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.

    未完待续。。。。。

  • 相关阅读:
    无重复字符的最长子串
    最长公共前缀
    项目开发的 工程化
    包管理 import debug 模块管理 module
    Third Party Browser Drivers NOT DEVELOPED by seleniumhq
    任何不看源码的代码引入都是存在定时爆炸的可能
    博客数计数
    lineage 世系 血缘 容错机制 DAG
    查源码分析 游标 写 需要 cursors 一切不看源码的代码引入都是定时炸弹的启动
    8核 16g 及时释放内存空间
  • 原文地址:https://www.cnblogs.com/Yukang1989/p/2946742.html
Copyright © 2011-2022 走看看