在《Objective-C基础编程》中亚搏app官方网站
Tagged Tags:

     看了两天《Learn Objective-C on the MAC》
中文版本《Objective-C基础编程》,大概认真读到了第9章内存管理部分,感觉这语言可比C++简单多了。

      第一天,因为有C语言基础的缘故,我在windows 上安装了GNUstep
(Objective-C)开发环境,变看电子书籍,边在PC上编译运行树上的示例,几乎一个都没放过,还做了不少笔记。
(毕竟作者 Mark Dalrymaple & Scott Knaster
是高屋建瓴,叙述技术娓娓道来,将其实很深的技术要点深入浅出地讲出,言简意赅,还将Objc与C语言做对比来说明,印象深刻)。不知不觉就在第一天看完了前8章。

 但是从第9章开始内存管理部分,可没有那么好啃了。

“……我们常常讲这些规则复杂化,同样,忽略这些规则也是一种常犯的错误。如果你正在漫无目的地滥用retain
和release
方法1⃣️修正这些错误,那就说明你还没有真正掌握这些规则。你需要放慢速度,休息一下,然后再继续阅读……“
在《Objective-C基础编程》中,作者如是说。

看说的多好,欲速则不达。

同时,我在临睡前也翻翻知乎的帖子,查看一下前辈的学习建议和曲线。

个人总结如下:

  1. 如果确定要长期在MAC/IOS下开发,Objective-C & swift
    都要学
    ,有了Objc
    基础的人千万不要轻视对swift的学习,当然学习C/C++的对Objc/swift
    不屑的早晚有后悔的一天。
    毕竟语言只是个工具,如果非常熟悉某种语言的话,其实学习objc/swift
    的代价会非常小。
  2. 个人在前两天决心入手MAC book前涉猎了一下app store
    上的调查,总结出的结论是:
    技术在MAC/IOS上不是瓶颈,难得的是想法和创意。所以在确定要开发项目前,先做一些调查,有利可图再继续做下去,不要埋首到技术钻研和无穷尽的编码中,那样太没有趣味了。

看了《Objective-C基础编程》初步对Objc 有了个初步的了解,
(条条框框比C++多,但是要比C 多了不少,掌握起来其实有很大难度的)。

但是swift 倒是一门易学易用的语言,在图书馆借到了 Pitre 的《swift
基础教程2nd》,粗略翻了一下,这门语言可跟javascipt 很像呀。 

好了,开始上路。

亚搏app官方网站 1

  • Swift 2 是Apple
    从头打造的现代语言,功能强大且易于学习。Apple公司已将其作为日益增长的iOS/watchOS/tvOS/Mac
    OS X 应用程序的开发语言
  • Xcode  目前最新的Xcode
    最新版本是Xcode8.3
  • LLVM 在xcode
    中,LLVM在幕后工作,这种编译器技术让Swift 语言变得优雅,并将Swift
    代码转换为Apple设备处理器能够运行的机器吗
  • REPL
    (Read-Eval-Print-Loop)是一个命令行工具,可用于快速尝试Swift
    代码。在MAC OS X中,可在terminal 中运行它
  • www.yabovip4.com,playground
    在Xcode中,提供了交互性和实时的结果,非常适合用来学习Swift

边看书边实践边写随笔:

Chapter 1 Swift 简介

  1. 在Terminal 中输入xcrun swift 可进入REPL,进行swift代码测试

  2. 使用var 定义变量,使用let 定义常量

  3. swift 基本类型:

    亚搏app官方网站, Bool, Int ,Int32,Int64,Int8,Int16, UInt,UInt32,UInt64,UInt8,UInt16,Float,Double,Character,String

  4.  数学运算法  加 (+),减 (-),乘 (*),除
    (/),各种语言在这点都是一个德性。

  5. 数值表示法, 二进制,八进制,16进制,科学计数法,与C同

  6. 轻松显示字符串

 使用嵌入表示法\在《Objective-C基础编程》中亚搏app官方网站。() 来引用变量/常量,如

let  n=10
let  name= “Tom”
let  city=“Shanghai”
print (“I am \(name), from \(city), age=\(n)")

 7. 使用typealias 定义别名,与C中的typedef 同,如

typealias EightBits=UInt8
var reg:EightBits=0

 8.元祖 (Tuple) 元祖是由一个或多个变量/常量/字面量组成的单个实体,如

let myDreamCar=(2017,"Mercedes-Benz","M-Class")
print (myDreamCar.0)
print (myDreamCar.1)
print (myDreamCar.2)

 9. 可选类型, (现在还不明白这个用处是?)

var v: Int?

 Chapter2  集合

  1. 在《Objective-C基础编程》中亚搏app官方网站。数组

    let candyJar=[“Peppermints”, “Gooey Bears”,”Happy Ranchers”]
    print (candyJar[0])
    candyJar.append(“Candy Canes”) //!!! error ,the array is constant

    var refillableCandyJar =candyJar //将常量数组赋给变量数组
    refillableCandyJar.append(“Candy Canes”)
    refillableCandyJar+=[Peanut Clusgters”];
    refillableCandyJar+=[“Banna Taffy”,”Bubble Gum”]

    var h20:[String]=[“Hydogen”,”Hydrogen”,”Oxygen”]; //如果要在声明数组时指定其值的类型

 与C同,数组中包含的元素类型必须相同。

在《Objective-C基础编程》中亚搏app官方网站。用var 定义的是可变的数组,使用let定义的是常量数组。

swift语言中的数组可以类比为C中的向量 vector。

在《Objective-C基础编程》中亚搏app官方网站。swift中数组可以修改/替换(指定数组索引并赋给它新值即可),删除(removeAtIndex/removeLast),插入(insert:atIndex),合并(+)

  • 字典

字典包括两个不同的部分:键 (key)和 值
(value),键和值的类型可以不同,但所有键的类型都必须相同,所有值的类型也必须相同。

va r dict =["one":1, "two":2,"three":3,"four":4]
print (dict["one"])  //find

dict["five"]=5 //add

dict["one"]=11 //update

dict["one"]=nil //delete

dict.removeValueForKey("two") //delete
  • 数组的数组

//Todo

//add some codes

  • 创建空数组和词典

    var myEmptyArray:Array=[]
    //or
    var myEmptyArray=Int
    myEmptyArray+=[33,44,66]
    myEmptyArray=[] //delete all items

    var myEmptyDictionary =Dictionary ()
    myEmptyDictionary =[“myKey”,12.34]

  •  数组迭代

    //method 1
    for itemName in list {
    … do something with itemName
    }

    //method 2
    //迭代数组的值及其索引
    for (index, candy) in combinedRefillableCandyJar.enumerate () {
    print (“Candy (candy) is in position (index) of the array”)
    }

 

  • 迭代词典

    for (index, value ) in arceneauxsOtherCandyRoute {
    print (“(key) has a candy jar with the following contents:(value)”)
    }

 swift 基本数据类型学习&介绍完毕

<Chapter 2 end >

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注