oc学习之路

2019-03-25  本文已影响0人  Asteriskjs

引用于:http://note.youdao.com/noteshare?id=4249169754a9dbe7809792df14402324

2019.03.23:

终于坚持着看了《objectiv-c编程》(第二版) Aaron Hillegass Mikey Ward [美],王蕾(译),华中科技大学出版社,此书在亚马逊上书评并不好,但是无奈objective-c没有几本好用的书,所以买了基本oc,其中有它,看了之后,看的前提我是了解了一点点oc语言的,但是看了这本书,并没有解惑的和获得知识的感觉,反倒就是知识点说不明白,内容胡乱编凑起来的一本书而已。

所以,建议后来者不要读此书。

我的两一本《objective-c基础教程》(第二版) Scott Knaster Waqar Malik [美] ,周庆成(译),

已经读到第九章:内存管理。真心不错的入门教程。《objectiv-c编程》(第二版)真是垃圾,耽误时间。

C++已经使用5年,oc和C++相比,欠缺很多,从语言层面上讲,不够丰富,内容语法混杂,如果想要使用好oc内存管理是一个令人心烦的事情,好在arc出现。另外就是oc里面支持C语言、C++语言的混编,foundation,也有C++版本corefoundation,所以要精通oc还是最好会C语言,如果会C++更好。

oc出生于1980年,1988年被apple公司使用,直到后面的各种优化,从书籍和资料上面讲,oc不够丰富,apple developer 网站打开缓慢,内容陈旧。以上都是自己亲身感受,非听信他人。如有不对的地方还请讨论指正。

补充:

xcode10已经放弃了oc的垃圾回收机制了吧,没有在xcode上面找到。目前比较流行的是ARC 和MRC。在进行混编,非oc对象的时候,需要自己管理内存。

1.C++重载、重写、覆盖:

参考:https://www.cnblogs.com/zhangjxblog/p/8723291.html

oc里面的重载、重写、覆盖:

不能重载:相同函数名称,不同参数这种方法。

没有隐藏:

参考:https://www.cnblogs.com/rainwz/p/4703872.html

2.id类型:

id:本质上是C++的模板类

id相当于C语言里面的void* 指针。

参考:https://www.jianshu.com/p/80ef5030e6c0

3.oc源码:

oc源码应该没有公开:

参考:https://www.jianshu.com/p/30ec92f1e707

oc代码转换为C++代码:

参考:https://www.jianshu.com/p/a5fb4852a4d3

4.oc的循环引用解决办法:

关键字:__weak

参考:https://www.jianshu.com/p/ec7b836f0fad

5.oc new 和alloc

new只能调用init方法

参考:https://www.cnblogs.com/lytwajue/p/6735283.html

dealloc

参考:https://www.jianshu.com/p/44f2ef4552a8

6.oc里面的枚举器,相当于C++的容器迭代器;

7.oc内存管理:

OS X 里面采用垃圾回收功能:

1.autoreleasepool 关键字

2.NSAutoreleasePool 对象

iOS里面采用ARC自动引用计数

8.开启和关闭ARC计数:?

9.开启和关闭垃圾回收:?

垃圾回收和ARC无法一起使用。

参考:https://www.jianshu.com/p/1db4a4b76c34

10.ARC:automaTIc reference counTIng

对应的还是MRC:手动管理内存

11.ROP:reserve object pointer

12.手动内存管理:

关键字:游戏玩家进入房间的故事。

参考:https://www.jianshu.com/p/48665652e4e4

13.oc的本质:

参考:https://www.jianshu.com/p/a11c565a6783?tdsourcetag=s_pctim_aiomsg

参考:https://www.jianshu.com/p/514a3afa512e?tdsourcetag=s_pctim_aiomsg

14.mac developer source:

参考:https://opensource.apple.com/tarballs/objc4/

15.NSData和结构体struct之间如何转换?

参考:https://www.cnblogs.com/pengyingh/articles/2371398.html?tdsourcetag=s_pctim_aiomsg

16.《objective-c基础教程》(第二版)

源码:https://www.apress.com/cn/book/9781430241881?tdsourcetag=s_pctim_aiomsg

17.oc属性:

参考:https://www.jianshu.com/p/98db9087a6e7?utm_campaign

参考:https://blog.csdn.net/m0_37681833/article/details/60872342

参考:

18.apple开发者网站:https://developer.apple.com/

很慢:。。。。GFW搞得挺好。。

19.oc var:

20.NSNumber与NSInteger的区别

一个是类,一个是基本类型?

参考:https://www.cnblogs.com/wangpei/p/3538698.html

21.oc property dynamic 和 synthesize

参考:https://blog.csdn.net/csdn_hhg/article/details/50183847

参考:https://blog.csdn.net/hherima/article/details/8622948

22.oc 选择器 selector

参考:https://www.jianshu.com/p/96bfa51346e2

23.oc类别和非正式协议:

参考:https://www.jianshu.com/p/1863af83b616

24.oc 委托:

不知道对不对:

参考:https://blog.csdn.net/ma52103231/article/details/7564314

委托人(代理人):协议(只有声明,没有实现)

被委托人(被代理人):实现协议的实体(协议的实现)

委托人发出委托任务:执行协议里面约定好的方法

被委托人执行委托任务:约定好的方法实际上是实现协议的方法。

协议,就是java语言里面的接口,C++里面的抽象类,不是新东西。

1980年的老语言能够好到那里去,目前从语法书写层面和概念上都是很落后的,无奈,被苹果公司选中了,是笨蛋也能出名而已。另外oc就是个大杂烩。C、C++都可以混在里面。语法更是混乱,对于不懂C、C++的人来说,很头大。

参考:https://www.jianshu.com/p/96cb34c9dab0

25.oc 拷贝copy mutablecopy

皮毛:还有点错误,但是可以参考一下

参考: https://www.jianshu.com/p/dcbbe69551ef

讲得不错

参考:https://www.jianshu.com/p/fa0698b95274

26.oc 代码块 中 的各种变量

参考:https://www.jianshu.com/p/df613c2b7a65

参考:https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/Blocks/Articles/bxVariables.html#//apple_ref/doc/uid/TP40007502-CH6-SW1

27.apple developer 网站:

参考:https://developer.apple.com/library/archive/navigation/

28.id and id<xxx>

id是任意oc对象类型的指针

id<xxx> obj 是任意oc对象类型的指针,并且准守xxx协议。也可以这样写:id  <xxx>  obj

引申:遵守xxx协议的通用写法就是:<xxx> 无论是类声明中,还是变量声明中。

类声明这样写: @interface myprotocol : NSObject <xxx>          :协议myprotocol继承于基类NSObject 遵守xxx协议

变量声明这样写: id <xxx> val :变量类型为id 遵守xxx协议。

*注意:容易和C++模板类的声明、模板对象声明混淆。完全不是一个东西。

参考:https://www.cnblogs.com/hui1107464497/p/4509893.html

上一篇 下一篇

猜你喜欢

热点阅读