《iOS开发60分钟入门》

原文链接

@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];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 苹果官方文档翻译 《Objective-C语言编程》(Programming with Objective-C) ...
    fever105阅读 25,977评论 19 130
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,226评论 30 472
  • 1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch...
    阳光的大男孩儿阅读 5,067评论 0 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,099评论 19 139
  • 同行相轻 “小蝶,是我的同乡,当初我们是一起被骗到这个城市的,都没能摆脱命运的残酷安排。因为一起经历了那种不堪的日...
    残剑阅读 353评论 0 1