引用于: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
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++模板类的声明、模板对象声明混淆。完全不是一个东西。
网友评论