美文网首页
《iOS开发60分钟入门》

《iOS开发60分钟入门》

作者: RoFF | 来源:发表于2015-12-03 14:11 被阅读176次

    原文链接

    @autoreleasepool

    作用:优化内存的使用和释放

    1, 写基于命令行的的程序时,就是没有UI框架,如AppKit等Cocoa框架时。

    2, 写循环,循环里面包含了大量临时创建的对象。(本文的例子)

    3, 创建了新的线程。(非Cocoa程序创建线程时才需要)

    4, 长时间在后台运行的任务。

    __weak, __strong :用来修饰变量

    __strong 是缺省的关键词。

    __weak 声明了一个可以自动 nil 化的弱引用。

    __unsafe_unretained 声明一个弱应用,但是不会自动nil化,也就是说,如果所指向的内存区域被释放了,这个指针就是一个野指针了。

    __autoreleasing 用来修饰一个函数的参数,这个参数会在函数返回的时候被自动释放。

    对象 消息

    在Java、C++世界,我们调用一个对象的某方法,在Objective-C里,这称作给类型发送一个消息

    在Java里,对象和方法关系非常严格,一个方法必须属于一个类/对象,否则编译是要报错的。而在Objective-C里,类型和消息的关系比较松散,消息处理到运行时(runtime)才会动态决定,给类型发送一个它无法处理的消息,也只会抛出一个异常,而不会挂掉。

    [obj undefinedMethod];

    在代码里调用没定义的方法(这是Java世界的习惯说法啊,专业的叫法是,给obj对象传递它无法处理的消息),Xcode会警告,但编译能成功,运行的时候会出错。

    @interface

    与Objective-C的interface概念最接近的是C和C++里的头文件,它与implementation是成双成对出现的,作用是声明类的成员变量和方法。它与Java的interface概念完全不同:

    Objective-C里,interface有且只有一个实现,Java的interface可以有0-N个实现

    Objective-C里,interface可以定义成员属性,Java里不可以

    Objective-C里,和Java的Interface概念相似的是Protocol

    私有方法和公开方法

    写在.h头文件里的方法都是公开的,Objective-C里没有私有方法的概念,要实现私有方法的效果只能借助Category

    类方法:类似静态函数,加号前缀

    @interface MyClass

    +(void) sayHello;

    @end

    使用:[MyClass sayHello];

    实例方法:非静态函数,减号前缀

    @interface MyClass : NSObject

    -(void) sayHello;

    @end

    mycls = [MyClass new];

    [mycls sayHello];

    相关文章

      网友评论

          本文标题:《iOS开发60分钟入门》

          本文链接:https://www.haomeiwen.com/subject/czkshttx.html