在学习ios开发前,最好还是先学习下objective-c,可以做到事半功倍的效果。

1.打印使用nslog()函数打印,此打印包括了时间戳,日起戳和自动附加换行符。

2.boolean型(BOOL),保存真值(YES)和假值(NO)的变量。在函数中直接使用bool做判断。

3.oop的关键字:间接 indirection。基本变量就是一种实际应用。

4.id类型。它代表identifier标识符。实际上是一个指针,指向其中的某个结构。

5.objective-c中的@interface部分:为新类定义的接口

6.类是一种结构,它表示对象的类型。

7。对象是一种结构,它包含值和指向其类的隐藏指针。

8。实例是对象的另一种称呼。

9。消息是对象可以执行的操作,用于通知对象去做什么。

10。方法是响应消息而运行的代码。

11。接口是对象的类应该提供的特性的描述。

12。实现是接口正常工作的代码。

13。implementation部分,接口interface的实现。可以实现在interface未定义的方法,看成是私有方法。

14。实例化对象,需要分配内存,然后这些内存被初始化并保存一些有用的默认值。

15。继承  语法: @interface Circle: NSObject    只能从一个类继承。

16。超类,你所继承的类。

17。父类,超类的一种表达形式。

18。子类,实施继承的类。

19。孩子类,子类的一种表达形式。

20。super关键字,调用父类的方法。

21。复合,对象间的组合,将多个组件组合在一起配合使用。

22。存取方法,用来读取或改变对象特定属性的方法。setter方法,getter方法。不要用get当作存取方法的前缀。

23。在“X是一个Y”,使用继承“is a”。“X有一个Y”,就可以使用复合“has a”。

24。依赖关系,是两个实体之间的一种关系。

25。@class关键字,告诉编译器这是一个类,所以我只需要通过指针来引用它。

26。xcode编程时,任何时候都可以按Esc键,让Xcode打开这个包含所有可能代码的自动完成列表。

27。名称旁边的彩色方框表示这个符号的类型:E表示枚举类型,f表示函数,#表示#define指令,m表示方法,C表示类。

28。结构体NSRange,表示相关事物的范围。location 字段存放该范围的起始位置,length字段则是该范围内所包含元素的个数。设置值,NSMakeRange(17, 4).

29.NSPoint代表的是笛卡尔平面中的一个点(x,y).NSSize用来存储长度和宽度。NSRect矩形,包含NSPoint和NSSize。使用快捷函数创建NSMakePoint(),NSMakeSize(),NSMakeRect().

30.NSString创建函数,stringWithFormat:  此方法是一个类方法(及工厂方法)。

31。NSColor可以方法全局变量,如[NSColor blueColor].

32.NSString的length方法。返回字符串中的字符个数。

33。NSString的isEqualToString:方法,用来比较接收方和当前参数传递来的字符串,返回一个BOOL。

34。NSString的compare:方法,将接收对象和传递来的字符串逐个字符地进行比较,返回一个NSComparisonResult(一个enum)。

35。NSString的compare:options:不区分大小比较。options是一个掩码,常用选项有NSCaseInsensitiveSearch不区分大小写。NSLiteralSearch完全比较,区分大小写。NSNumericSearch比较字符串的字符个数。

36。NSString的hasPrefix:是否以另一个字符串开头。

37。NSString的hasSuffix:是否以另一个字符串结尾。

38。NSString的rangOfString:传递的参数是要查找的字符串。返回NSRange struct来告诉匹配的部分在哪,匹配几个字符个数。range。start为6,range。length为7。如果没有找到那么range.start为NSNotFound。

39。NSMutableString一个可变的字符串。类方法stringWithCapacity:初始化一个一定大小的空间。使用appendString:和appendFormat:来附加新字符串。使用deleteCharactersInRange:,删除字符串中的字符。

40。NSArray用来存储对象的有序列表。两个限制:(1)不能存储C语言中的基本数据类型。(2)不能保存nil类型。-componentsSeparatedByString:来切分NSArray。componentsJoinedByString:来合并NSArray中的元素。

41.可变数组NSMutableNSarray.通过arrayWithCapacity来创建新的可变数组。使用addObject:在数组末尾添加对象。-(void)removeObjectAtIndex:(unsigned)index;方法来删除指定的元素。

42.NSEnmuerator,向数组申请枚举器。-(NSEnumerator *)objectEnumerator.使用reverseObjectEnumerator和nextObject来获取前一个和后一个对象。

43.快速枚举,for (NSString *stirng in array);

44.NSDictonary字典,也称为散列表或关联数组。搜索的速度非常快。

45.NSMutableDictonary可变字典。用类方法dictionaryWithobjectsAndKeys:来创建字典。使用-(id)objectForKey:(id)aKey来获取字典中的值(没有找到返回nil)。也可以用+(id)dictionaryWithCapacity;(unsigned int)numltems;来创建可变字典。使用-(void)setObject:forkey方法来添加字典元素。使用removeObjectForKey:方法来删除一个关键字。

46.可以使用NSString,NSarray或NSDictonary类,但是不要去创建他们的子类。

47.NSNumber类包装基本数据类型。创建+(NSNumber *) numberWithChar: (char)value;(这个动作叫装箱) 重新获取-(char)charValue;(这个动作叫取消装箱)  objective-C语言不支持自动装箱。

48.NSValue创建 +(NSValue *)valueWithBytes: (const void *)value   objCType:(const char *)type;  可以使用@encode编辑器指令根据数据类型的名称生成合适的字符串。 在使用getValue:方法来提取数值。 struct型数据转换为NSValue的便捷方法,+(NSValue *)valueWithPoint:(NSPoint) point;  -(NSPoint)pointValue;

49.NSNull类,表示什么都没有。只有一个类方法+(NSNull *)null;

50.内存管理,每个有一个与之相关联的整数,称作引用计数器。当某对象访问一个对象时,将该对象的保留计数器减1。当使用alloc,new或copy消息创建一个对象时,对象的保留计数器被设置为1。增加对象的保留计数器值,可以给对象发送一条retain消息。要减少对象的保留计数器值,可以给对象发送一条release消息。当计数器为0即被销毁时,obctive-c自动向对象发送一条dealloc消息。

51。使用retainCount消息获取保留计数器的当前值。

52.如果一个对象具有指向其他对象的实例变量,则称该对象拥有这些对象。

53。autorelease pool自动释放池,存放实体的池,这些实体可能是对象,能够被自动释放。  -(id)autorelease;就是把对象放入自动释放池。[someObject autorelease]; -drain方法,清空自动释放池而不销毁它。

54.内存管理规则:(1)当使用new,alloc或copy方法创建一个对象时,该对象的保留计数器为1。当不再使用时,需要发送一条release或autorelease消息。(2)如果通过其他方法获取一个对象时,则不需要清理它。(3)如果保留某个对象,最终需要释放或自动释放对象。必须保持retain对象和release方法的使用次数相等。

55。[NSMutableArray arrayWithCapacity:17];[NSColor blueColor]方法不属于alloc,new,copy这3个方法中的一个。

56。开发iphone软件最好不要使用垃圾回收机制,因为垃圾回收机制非常耗时,需要检查成千上万的对象,而且必须停止程序的运行。非常的影响性能,像iphone嵌入式设备,cpu处理慢,内存小。最好不要使用垃圾回收机制。

57。alloc分配的内存,都初始化为0。BOOL初始化为NO,int初始化为0,float初始化为0.0,指针初始化为nil。

58。init方法,使用if (self = [super init])来判断初始化成功。

59。指定初始化函数,通常接受参数最多的初始化函数最终成为指定初始化函数。(如果构造了一个初始化函数,则一定要在你自己的指定初始化函数中调用超类的指定初始化函数)

60。@property 一种新的编译器功能,表示声明了一个新对象的属性。 @synthesize,表示创建该属性的访问期。

61。点表达式(.),出现在左边调用属性名称set的方法。出现在右边调用getter方法。

62。category类别,利用objective-c的动态运行时分配机制,为现有的类添加新方法。 (创建的类别没有实例变量部分)

63。类别的局限性,1。无法向类中添加新的实例变量。2。名称冲突,即类别中的方法与现有的方法重名。类别的方法有更高的优先级,完全取代初始化方法。

64。delegate委托,是一种对象,另一个类的对象会要求委托对象执行它的操作。

65。run循环是一种Cocoa构造,它一直处于阻塞状态(即不执行任何处理),直到某些有趣的事情反生为止。

66。委托强调类别的另一种应用,被发送给委托对象的方法可以声明为一个NSObject的类别。

67。创建一个NSObject的类别称为“创建一个非正式协议”。非正式协议,只是一个表达式,表示“这里有一些你可能希望实现的方法,因此你可以使用它们更好地完成工作”。

68。选择器,只是一个方法名称。可以使用@selector()预编译指令指定选择器。一个名为respondsToSelector:的方法,该方法询问对象以确定其是否能够响应某个特定的信息。

69。formal protocol正式协议:一个命名的方法列表。采用协议的方法是在类的@interface声明中列出协议的名称。声明协议,@protocol NSCoding     。。。 @end

70。采用协议,@interface Car: NSObject <NSCoping>    ... @end

71.内存管理原则:如果你使用alloc,copy或new方法获得一个对象,则该对象的保留计数器的值为1,而且你要负责释放它。

72。shallow copy浅层复制:不复制引用对象,新复制的对象只指向现有的引用对象。deep copy深层复制,将复制所有的引用对象。

73。使用的数据类型中为实例变量和方法参数指定协议名称。如,方法要求对象遵守NSCopying协议,: -(void)setObjectValue:(id<NSCopying>) obj;

74. 对方法的定义:@optional 可选实现 @required 要求实现

75。Interface Builder 也称作IB。

76。NSDate,是Cocoa中用于处理时间和日期的基础类。使用[NSDate date];获取当前的日期和时间。+dateWithTimeIntervalSinceNow: 接受一个NSTimeInterval参数,以秒为单位。正数表示将来的时间,负数表示过去的时间。

77。NSData,包装大量字节的类。NSData对象是不可改变。NSMutableData支持数据内容中添加和删除字节。

78。序列化和反序列化,就是编码和反编码。编码:对象可以将它们的实例变量和其他数据编码为数据块,然后保存到磁盘中。反编码:将保存在磁盘中的数据读回到内存,还能基于保存的数据创建新对象。

79。KeyedAarchiver使用健/值对保存对象。encodeObject:forKey:或encodeInt:forKey:...保存对象。decodeObjectForKey:或encodeIntForKey:...恢复对象。

80。键值编码亲切的称为KVC。一种间接更改对象状态的方式,现实方法是使用字符串描述要更改的对象状态部分。包括-valueForKey:和-setValue:forKey:。以字符串的形式向对象发送消息。

81。valueForKey:返回以键-key或-isKey命名的getter方法,如果不存在getter方法,查找对象内部名为_key或key的实例变量。

82。KVC具有自动包装功能。即,setValueForKey时自动将标量值(int,float和struct)放入NSNumber或NSValue中。-setValue:forKey: 按名称设置值。

83。编译器和苹果公司都以下划线开头的形式保存实例变量名称。

84。使用-valueForKeyPath和-setValueForKeyPath方法访问路径。eg。[car valueForKeyPath: @"engine.horsepower"];键路径是任意的。 可以整体操作,向一个NSArray请求一个键值,返回一个NSArray。

85。流畅的用算,eg。[garage valueForKeyPath: @cars.@count];返回总车辆数。其中的@count用于通知KVC机制计算键路径左侧的结果。eg。[garage valueForKeyPath: @cars.@avg.mileage]; 返回平均每辆汽车行驶的距离。@avg运算符将键路径分成两部分,前半部分cars,是汽车一对多关系的键路径,后半部分键路径表示距离。进行循环累加后并计数再进行除法运算。还有@min,@max等操作。

86。批处理,dictionaryWithValueForKeys: 接受一个字符串数组,调用获取一些键,构成字典。

87。<null>和(null)的区别,<null>是一种[NSNull null]对象,而(null)是一个真是存在的nil值。

88。创建谓词:NSPredicate *predicate = [NSPredicate predicateWithFormat: @"name = 'Herbie'"]; 使用字符串在后台构建对象树,这些对象树用来计算谓词的值。  使用谓词,BOOL match = [predicate evaluateWithObject: car]; 根据指定的对象计算自身的值。

89。使用-filteredArrayUsingPredicate: 方法过滤。

90。%K 指定键路径。

91。字符串的关系运算符:BEGINSWITH: 检查某个字符串是否以另一个字符串开头。ENDSWITH:检查某个字符串是否以另一个字符串结尾。CONTAINS:检查某个字符串是否在另一个字符串内部。LIKE:问号表示一个字符匹配,星号表示与任意个字符匹配。MATCHES:运算符,赋给该运算符一个正则表达式。

92。[c],[d],[cd]修饰符:c表示不区分大小写,d表示不区分发音符号。

93。end

objective_c札记相关推荐

  1. SDCC 2015算法专场札记:知名互联网公司的算法实践

    SDCC 2015算法专场札记:知名互联网公司的算法实践 发表于4小时前|526次阅读| 来源作者投稿|0 条评论| 作者张俊林 SDCC算法架构大数据京东腾讯 摘要:11月21日,为期三天的SDCC ...

  2. [转载]读史记札记23:并不是每次跌倒都能够重新站起来

    原文地址:读史记札记23:并不是每次跌倒都能够重新站起来作者: 王立群 读史记札记23: 并不是每次跌倒都能够重新站起来 人们常说,跌倒了再站起来.这句话让不少在人生旅途上跌倒的人获得了改正错误的勇气 ...

  3. MongoDB学习札记第六篇之主从复制

    mongo系列文章请看http://www.codefrom.com/p/mongodb 环境准备: ubuntu12.0.4 mongodb3.0.3 主从复制是MongoDB中最常见的复制方式.这 ...

  4. SDCC 2015架构专场札记:一线互联网公司的架构实践

    SDCC 2015架构专场札记:一线互联网公司的架构实践 发表于8小时前| 835次阅读| 来源CSDN| 1 条评论| 作者么刚 SDCC架构数据库互联网性能优化架构师 width="22 ...

  5. SDCC 2015前端专场札记:Facebook、百度、腾讯、美团、饿了么等互联网公司的前端实战

    SDCC 2015前端专场札记:Facebook.百度.腾讯.美团.饿了么等互联网公司的前端实战 发表于2015-11-27 14:14| 682次阅读| 来源AdMaster| 1 条评论| 作者刘 ...

  6. lisp 绘制立体感的五角星_几何作图的方法、例子、解答及札记

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 各位好,我是一位建筑界的工程师,以前也喜爱数学,由于环境需要,我慢慢了远离了理论数学,对各种应用数学比较感兴趣,求解时候也不大顾及理论的严密性,只求可以解 ...

  7. 在Marketplace上销售应用【WP7学习札记之十八】

    Maketplace规则: ◇[1]Maketplace是唯一发布应用程序的地方: ◇[2]用户能在Maketplace上购买和部署应用程序: ◇[3]每个开发者可以解锁3台手机,这样开发者可以编写和 ...

  8. 对于一个指针可以多次使用delete_【C++札记】new和delete

    malloc,free和new,delete区别:  a.malloc,free是C/C++的标准库函数.new,delete是c++的操作符.  b.malloc申请的是内存,严格意义不是" ...

  9. Git初学札记(七)————合并分支(merge)

    目录 引言 开始Merge 1.History视图 2.Team菜单 3.Git Repositories视图 巧用Git Staging视图 放弃Merging 可能的Merge结果 引言 Git鼓 ...

最新文章

  1. 防盗链技术底层实现原理分析
  2. 安装TCExam经验
  3. 在C++中子类继承和调用父类的构造函数方法
  4. 刚接触电子时,有过哪些百思不得其解的问题?
  5. Django系列:(1)PyCharm下创建并运行我们的第一个Django工程
  6. 【服务端渲染】NuxtJs 综合案例
  7. general protection fault怎么办_法院离婚调解书我想办补充协议怎么办?-免费法律咨询...
  8. Lua和C的交互说明(函数)
  9. spring中的ioc解决程序的耦合入门
  10. python HtmlTestRunner python2.x python3.x报告优化模板源码下载
  11. 没用过Node.js,就别瞎逼逼
  12. 数字图像分辨率的认识
  13. 前端javascript如何分享内容到twitter和Email
  14. ElasticSearch Aggregation(三)
  15. 利用Excel进行多张表的合并计算,操作简单
  16. 量化金融投资及其python应用_量化投资:用Python实现金融数据的获取与整理
  17. 古典音乐入门的常见问题
  18. 网易七鱼客服 发起客服-触发两条会话
  19. bzoj3265 志愿者招募加强版
  20. 微前端项目实战及原理

热门文章

  1. 技术干货|昇思MindSpore 1.5版本中的亲和算法库——MindSpore Boost
  2. Avformat_open_input函数的分析 结合HTTP协议
  3. 网络常见面试题总结(四)
  4. bash腳本編程之三 条件判断及算数运算
  5. 数据把脉,智慧防灾——推进自然灾害应急管理信息化建设的思考
  6. “终端有鸿蒙,云端有安超!” 鸿蒙落地,安超有什么新动作?
  7. 【AI达人创造营第二期】基于Jetson nano的餐厅自助结账系统部署
  8. BZOJ2648: SJY摆棋子2716: [Violet 3]天使玩偶
  9. 忘记网站上的密码时怎么办?用Python如何快速帮你找回?
  10. my first try _ 网络适配器问题以及解决办法