美文网首页
oc学习之路

oc学习之路

作者: Asteriskjs | 来源:发表于2019-03-25 11:55 被阅读0次

    引用于: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

    相关文章

      网友评论

          本文标题:oc学习之路

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