OC基础随笔(一)

UI
http的三次通话 token https/http的区别
字符串(增删改查)
数组
字典
集合

通知
数据解析 NSData
枚举/循环/嵌套
多线程 (回调,break,sleep)
指针/堆栈
引用
属性
封装/继承/多态 (扩展)
内存GCD
runtime/runloop
KVO
规范

工厂模式/协议/
各种热门应用SDK 地图,支付,语音(权限请求)/媒体(AVFoundation)

编程概念
类型:通过声明类型和名称,可以为程序创建新的变量. 有了类型编译器才会知道申请多少字节(内存)
类比:就和物理中的各单位一样,有了类型我们才好知道它是速度?时间/长短,不匹配的类型会导致无法计算/计算错误.
变量:与某块数据相关联的名称
变量需要类型,同时也需要名称,变量名遵循驼峰命名法原则.字母/数字/下划线开头.变量名尽量与数据有关,使用统一规范,易于管理.
简写:为了减少程序员的编码量,提高效率,有很多常用代码OBJC语言提供
选择:程序会根据用户的不同选择显示不同的结果,或是界面/计算数值/计算方法.以下有几种常见选择的使用.if和else,bool,枚举
if(条件表达式){
//如果条件表达式符合,执行此段代码
}else{
//否则执行此段代码
}
while循环
while (检查表达式) {
输出代码
自变量
}

for 循环
for (初始化;检查表达式;自变量){
输出代码.
}
do-while 循环
do{
输出代码
自变量
}while(检查表达式)

break :用于中断循环.
continue:用于恢复循环(未达到某个条件,跳出此循环继续下一个循环,方便去除特定数值)

       函数:与某块代码相关联的名称(就是相当于一个小组名,告诉人它的用处)

函数需要前缀,告诉人们它返回什么类型数值,或是字符串或是数组,也可以为空(void),有了前缀后还要有函数的名字,让编程者快速了解此代码的作用好尽快使用/组合.
函数一般需要写入参数,我们需要给提示该写入什么类型参数,这个提示也需要名称的,同时需要遵循格式以逗号和其他形参隔开,这就是就是形参(parameter).当我们按照类型传入数值时,这个值就是实参(argument).
函数还可以协同作用.在函数内编码时可引用实现文件下的函数和该Foundation下的函数.自己阴用自己叫递归,需要限制条件(不然会无限递归)
标注库(standard libraries):其实在我们编程前,系统已经帮我们预编译了许多函数,这些代码有很多共通性可与让程序员专心编写业务代码.
局部变量:就如同函数如果不在.h文件声明它就不能被其他文件引用一样,在函数中声明的变量叫局部变量(local variable),它只有在函数执行的时候才会被使用.在该文件下所有函数都可以引用的变量叫全局变量(global variable),全局变量加个属性static,就是静态变量,静态变量只有声明的文件才能访问,其他的引用文件不可访问(也就是说全局变量所在的文件被引用了,那么久可以访问),变量放在专门的位置.局部变量放在帧(frame)中,它是编译器在函数执行时记录数据的地方,运行完函数就销毁.这和程序的生命周期有关(高效省内存).程序是多线程操作,这边完成一部分那边完成一部分.函数执行时帧被创建出来放到栈(stack)中,执行完毕退出栈.等待下一次调用.大家使用栈在描述帧在内存中存储的地点.栈有个特性是”先进后出,后进先出”类比相当于做电梯.有助于理解函数的运行.
作用域:函数定义中,一对花括号定义了函数的作用域.变量只在声明它的作用域中有效.通俗的讲就是有作用的地方.不同的对象在不同的位置有 不同的作用范围.在.m文件中全局变量的作用范围就是该.m文件下所有函数都可以借用.放在所有文件下都有作用的叫宏定义
编程肯定会有错误/优化的时候,这时候就需要我们做好准备,一个是单元测试,写好一个功能运行测试一下.确保产生错误就发现错误,另一个是写好注释.以便程序员好快速上手.另外需要按照统一的格式编写代码一个标准高效编写.最后学会调试,打断点(breakpoint)看数据.打好断点就可以使用各种调试工具定位错误.
数字:不同的数字占用的内存大小不同,针对不同量级的数字使用不同的标准.(正数尺寸有8,16,32,64位bit)同时数字有正负,正整数是无符号数(unsigned number)输出格式是%u,负整数是有符号正数(带小数的叫浮点数,同理) .计算机根据ASCII码表将字符转化为数字,这叫编码.特殊字符有其他的编码格式.有符号数和无符号数在二进制上正好相反.相当于010101和101010.
数字运算,整数与整数相除得到还是整数,若数不是整数那么就用float计算.Xcode最近准备禁用32位的应用,只使用64位的应用.之前为了代码可以在其他系统运行,苹果引进NSInterger和NSUInteger(U是unsigned的意思,无符号)可以替代C的long与unsigned long.
运算符也有简写,a = a+5 可以替换为 a += 5. 同时在条件运算符中常用的数+1,x + 1 替换为 x++. x - 1 替换为 x—. 更复杂的数学运算需要数学代码库,在C中需要引入#incloud <math.h>在mac 中需要打开终端输入 man math .
地址与指针:我们需要内存来帮我们操作数据,CPU通过随机存储器RAM来运算和处理.内存是用来交换数据.内存是有数字编号的,通常用地址(address)来指代某个特定字节的数据.就是我们常说的内存地址.内存太小运算不足,内存太大cpu寻址时间加长.每一个内存地址都是绝对的,不可修改的,但是内存地址是给计算机看的,对人十分不友好.所以要给内存地址抽象化,标签化.这就有了指针.指针可以修改,重定向.
我们使用*星号来指代指针,抽象概念的指针可以指向另一个指针,它只是一个标签.用更简便的标签替换复杂的标签.同时注意指针指向的内存地址,一旦这个内存地址被抛弃,再次指向的就是其他地址了,这就造成数据错误,形成野指针.
内存计数:Objc是通过引用计数的方式来控制对象的内存释放,对象被创建,被引用,被拷贝....的时候引用计数+1,当结束使用对象的时候-1,一直减到0,对象就被释放了.引用分为强引用和弱引用.强引用对象不在了,引用也不会消失,对象不会被回收(强引用持有对象).弱引用,引用的对象消失了,那么该引用就会被回收.(弱引用不持有对象)[相当于你拿枪去杀人,强引用是杀完人,人不在了,舍不得扔,还在手里.弱引用是拿枪杀完人,就把枪扔了]循环引用就是敌人也有一把枪指着你(相互引用),你不敢动,敌人也不敢动.你们都不能去干其他活,这就造成社会资源浪费(内存).我们创建OC对象属性的时候一般使用strong(强引用),weak(弱引用),非ARC对应的是retain和assign.weak被释放时会置为空(nil) assign对象会被销毁,但是指针仍然指向原地址(内容已变)关于引用还有一些特殊情况特殊要求催生了一些特定的引用:所有权修饰符__ ,不管是强引用弱引用保留释放,都只在作用域内生效(花括号),出了作用域,对象会被废弃.id类型默认是id __strong objc,.id的指针默认有__autoreleasing.我们调用一个变量的时候就会将该变量放到autoreleasingpool中,当需要销毁的时候,翅中的变量会全部销毁.在main.m中可以看到@autoreleasingpool包含/作用了整个程序.(只说这么多了,其他看的有点乱)

C中的函数对应OC中的是方法.只不过方法是面向对象的,而C是面向过程语言.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容

  • 307、setValue:forKey和setObject:forKey的区别是什么? 答:1, setObjec...
    AlanGe阅读 1,534评论 0 1
  • ———————————————回答好下面的足够了---------------------------------...
    恒爱DE问候阅读 1,713评论 0 4
  • 1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch...
    阳光的大男孩儿阅读 4,977评论 0 13
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 7,787评论 0 27
  • 出生在小地方,没有动车,所有形成都比较去省会中转,很麻烦么,也没有,三个多小时无固定班次。 考大学希望走出县城去大...
    Energy_4c0b阅读 200评论 0 0