IOS开发学习笔记(一)——ObjectC语言快速入门

需要学习IOS开发,首先需要掌握的是ObjectC语言。由于我之前接触过多年的C/C++和Java,所以很多地方我只需要理解ObjectC和他们的不同即可。当然为了能够系统的学习,建议您还是仔细学习一遍ObjectC语言,我这里并不会讲述太多原理方面的内容,只会尽量将实际编码中需要注意的内容列出:

  1. 基本的关键字,类似于for/case/switch等等,大家都是差不多的;
  2. “@”标识符标识与标准C有区别的关键字,"[]"标识方法调用;
  3. import关键字取代了include,这样可以不需要很多的#ifdef宏定义;
  4. @autoreleasepool标识一个自动释放池,这样我们alloc出的对象无需我们自己release;
  5. 简单数据类型类似与int等在ObjectC中继续存在,只不过BOOL是大写,并且取值是YES/NO;
  6. 所有的对象类型变量定义都使用C中的指针类型定义法,例如:NSString *str,但是注意我们的变量指向的是内容,但是不能对指针进行操作;
  7. 和大部分的C系列语言不同,我们不是使用object.method()这样的方法来调用方法,而是使用[object method]方法;
  8. 如果方法返回值,那么我们使用result = [result method]的形式;
  9. 如果方法包含参数,那么我们使用result = [result method:arg1, arg2name: arg2value]的形式,其中arg2name是参数名(或者可以认为是形参),arg2value是参数值(可以认为是实参),Apple给的说法是这样代码更易读,但是对于我来说真是一点都不习惯,当然我们也可以使用C++或者Java的那种方法,但这种方法Apple不推荐。。。;
  10. 大部分创建对象(构造方法调用)使用如下形式:NSDate *date = [[NSDate alloc] init]的形式,其中alloc负责分配地址,init负责初始化;
  11. 关于Automatic Reference Counting(ARC):ARC是IOS 5中增加的能力,这是一个非常强大的能力,这样我们可以在初始化对象后不用再去关心对象释放的问题(和Java相似的垃圾回收机制,只不过是在编译器中添加代码实现,不是直接在源代码中添加),以前我们给对象分配内容并且使用结束后需要调用[object release]来释放空间,防止内存泄露(memory leaking),注意需要在工程建立时选择这个选项;
  12. 对于方法来说,如果是"+"标记的,表示是static方法;如果是"-"标记的,表示是实例方法(非静态方法);
  13. 对于类来说,有interface表示类的接口(类似于C中的头文件),implementation表示类的实现(类似于C中的C文件);
  14. 对于类和方法的定义,我们经常看到的是:
    #import <Foundation/Foundation.h>
    
    @interface MyData : NSObject
    
    -(void)doNothing;
    
    @end
    
    #import "MyData.h"
    
    @implementation MyData
    
    -(void)doNothing {
        
    }
    @end

  15. 对属性的定义:
    #import <Foundation/Foundation.h>
    
    @interface MyData : NSObject
    
    @property int myId;
    // nonatomic非原子性访问,不加同步,多线程并发访问会提高性能。
    // strong相当于是一个深拷贝的操作
    @property (nonatomic, strong)NSString *name;
    
    
    -(void)doNothing;
    
    @end

    #import "MyData.h"
    
    @implementation MyData
    
    -(void)doNothing {
        _name = [[NSString alloc] initWithFormat:@"aaa"];
    }
    @end

    注意以上的_name属性需要这样使用。如果你需要使用方法你可以直接[self setName:xxxx]。

  16. 以上是基本的语法,后续可能会继续补充。




总体来说,ObjectC对于有C/C++/Java开发经验的程序员(like me)来说,学习的曲线远比C/C++到Java大,而且我认为ObjectC也不是我期待的那样简单和美好,Anyway,存在即是合理,更何况我们需要用来实现自己的梦想,Let's go to the next!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值