-
Notifications
You must be signed in to change notification settings - Fork 24
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
404 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
OjbectC基础教程 | ||
// | ||
1、@ | ||
双引号前加@符号表示字符串采用Cocoa的NSString来处理。 | ||
2、 BOOL | ||
布尔值只占用8个二进制数。YES NO | ||
|
||
//第6章 Xcode | ||
1、一次性修改引用: | ||
a、选定符号:局部变量或参数 | ||
b、Editor->Edit all in Scope (control+command+E) | ||
c、输入目标名称 | ||
|
||
2、快捷操作技巧 | ||
//鼠标 | ||
control-F:向右 (Forward) | ||
control-B:向左 (Backward) | ||
control-P:前一行 (Previous) | ||
control-N:下一行 (Next) | ||
control-A:行首 (command+<-) | ||
control-E:行尾 (command+->) | ||
control-T:转置光标两边符号 | ||
control-D:删除光标右边字符 (Delete) | ||
control-K:删除光标后面字符 (Kill) | ||
control-L:将光标置于正中 | ||
//折叠 | ||
Editor->Code Folding | ||
option+command+<- :折叠 | ||
option+command+-> :折叠取消 | ||
|
||
|
||
//8章 | ||
//--NS开头的类 | ||
1、NSString 处理字符串的类:双引号前加@ | ||
+:类方法:声明前面多一个 + 号 | ||
a、这个方法属于类对象(不是实例对象),并且通常用于创建新的实例。 也叫工厂方法。 | ||
b、访问全局类数据 | ||
-:实例方法,声明前面多一个 - 号 | ||
2、NSArray 数组 | ||
3种方法遍历数组: | ||
a、索引 | ||
b、使用NSEnumerator | ||
c、快速枚举 | ||
3、NSDictionary 字典 | ||
//NSArray和NSDictionary只能存储对象,不能直接存储任何基本类型的数据如int、float或struct | ||
4、NSNumber 包装基本数据类型 | ||
+(NSNuber *)numberWithChar:(char)value; | ||
5、NSValue 包装任意值 | ||
a、NSNumber是NSValue的子类 | ||
b、生成描述这个数据类型的字符串,采用@encode编译器指令 | ||
6、NSNull | ||
a、集合中不能存放nil值,采用NSNull来表示空内容 | ||
b、+(NsNull *) null; | ||
7、NSMutableArray 可变数组 | ||
8、NSEnumerator 枚举器 | ||
|
||
//9章 内存管理 | ||
1、Java或脚本语言无需考虑内存回收问题,他们的内存管理是自动进行的。 | ||
2、 -(id)autorelease; 自动释放池 | ||
-retain | ||
-release | ||
//10章 对象初始化 | ||
//13章 协议 | ||
1、正式协议 formal protocol:是一额命名的方法列表,要求显示采用协议 | ||
a、声明协议: @protocal NSCopying | ||
b、声明协议方法列表: | ||
c、采用协议:@interface Car:NSObject <NSCopying> 尖括号 | ||
|
||
//14章 AppKit | ||
1、Foundation Kit :文本输出发送到控制台进行通信 | ||
2、Application Kit:界面点击和处理信息 | ||
|
||
//15章 文件加载和保存 | ||
1、属性列表 plist :包含Cocoa知道如何操作的一组对象 | ||
NSarray,NSDictionary,NSString,NSNumber | ||
NSDate:日期和时间的基础类 | ||
NSData: |
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
《Linux内核设计与实现》 | ||
//12章 内存管理 | ||
1、内存管理单元:MMU,页大小为单位进行管理。 32位系统-4KB;64位系统-8KB; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
《object-c语法》 | ||
一、语法结构 | ||
#import <Foundation/Foundation.h> | ||
|
||
@interface SampleClass:NSObject | ||
- (void)sampleMethod; | ||
@end | ||
|
||
@implementation SampleClass | ||
|
||
- (void)sampleMethod{ | ||
NSLog(@"Hello, World! | ||
"); | ||
} | ||
|
||
@end | ||
|
||
int main() | ||
{ | ||
/* my first program in Objective-C */ | ||
SampleClass *sampleClass = [[SampleClass alloc]init]; | ||
[sampleClass sampleMethod]; | ||
return 0; | ||
} | ||
|
||
1、#import <Foundation/Foundation.h>是一个预处理命令,它告诉Objective-C语言编译器去实际编译之前包含Foundation.h文件。 | ||
|
||
2、@interface SampleClass:NSObject 显示了如何创建一个接口。它继承NSObject,这是所有对象的基类。 | ||
|
||
3、- (void)sampleMethod; shows how to declare a method. | ||
|
||
4、@end 标志着接口的结束。 | ||
|
||
5、@implementation SampleClass 显示如何实现接口SampleClass | ||
|
||
6、- (void)sampleMethod{} 显示方法 sampleMethod 的实现. | ||
|
||
7、@end标志着实现的结束。 | ||
|
||
8、int main() 是主函数在程序开始执行. | ||
|
||
9、/*...*/ 由编译器将被忽略,它已经把在程序中添加额外的注释。因此,这样的行称为程序中的注释。 | ||
|
||
10、NSLog(...) 另外一个函数可以在Objective-C会打印消息 “Hello, World!” 要显示在屏幕上。 | ||
|
||
11、return 0; 终止main()函数返回值为0。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
//《第一行代码 Android》 | ||
|
||
一、开启启程 | ||
1、四大组件: | ||
:活动(Activity):用户界面组件。一个应用程序可以包含多个Activity呈现不同的功能界面 | ||
:服务(Service):执行运行周期较长的操作和执行远程进程任务的组件 | ||
:广播接收器(Broadcast Receiver):数据共享的组件 | ||
:内容提供器(Context Provider):广播消息的组件 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
《设计模式》 | ||
http://www.cnblogs.com/beijiguangyong/archive/2010/11/15/2302807.html | ||
http://www.runoob.com/design-pattern/design-pattern-intro.html | ||
>对接口编程而不是对实现编程。 | ||
>优先使用对象组合而不是继承 | ||
//创建型 | ||
1. Factory Method(工厂方法) | ||
用一个单独的类来做创造实例的过程。 | ||
2. Abstract Factory(抽象工厂) | ||
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 | ||
3. Builder(建造者) | ||
创建复杂对象的算法,独立于组成部分和装配方式。构建和表示分离,同样构建创建不同表示。 | ||
4. Prototype(原型) | ||
复制对象。浅复制与深复制。 | ||
5. Singleton(单例) | ||
保障一个类只有一个实例,并提供全局访问点。 | ||
|
||
//结构型 | ||
6. Adapter Class/Object(适配器) | ||
将一个类的接口转换为客户希望的另一个接口。兼容类。 | ||
7. Bridge(桥接) | ||
将抽象部分与它的实现部分分离,独立变化。 | ||
8. Composite(组合) | ||
[分公司=-部门]:将对象组合成树形结构,表示“部分-整体”的层次结构。 | ||
9. Decorator(装饰) | ||
[穿衣服]动态的给一个对象添加一些额外的职责。把每个要装饰的功能放在单独的类中,并在类中包装这个对象。 | ||
10. Facade(外观) | ||
[股票与基金]为子系统的一组接口提供一个一致的界面。新系统与Facade对象交互,Facade与遗留代码交互复杂工作。 | ||
11. Flyweight(享元) | ||
[]运用共享技术有效的支撑大量细粒度的对象。大量对象开销大,实现共享一个对象。 | ||
12. Proxy(代理) | ||
[]为其他对象提供一种代理以控制对它的访问。远程代理、虚代理、保护代理、智能指引 | ||
|
||
//行为型 | ||
13. Interpreter(解释器) | ||
[音符]给定一个语言,定义它的文法的一种表示,并定义一个解释器用来解释语言中的句子。 | ||
14. Template Method(模板方法) | ||
[试卷]定义操作算法的骨架,而将一些步骤延迟到子类中。子类可以不改变算法结构即可重定义算法的某些特定步骤。 | ||
15. Chain of Responsibility(责任链) | ||
[加薪请求]使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 | ||
16. Command(命令) | ||
[烤肉串]将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 | ||
17. Iterator(迭代器) | ||
[售票员]提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。 | ||
18. Mediator(中介者) | ||
[联合国]用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 | ||
19. Memento(备忘录) | ||
[游戏状态保存]在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 | ||
20. Observer(观察者) | ||
[老板回来了]定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。 | ||
21. State(状态) | ||
[下班时间]允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 | ||
22. Strategy(策略) | ||
[商场促销]定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 | ||
23. Visitor(访问者) | ||
[男人女人]定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 | ||
|
||
//设计模式的六大原则 | ||
1、开闭原则(Open Close Principle) | ||
开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。 | ||
2、里氏代换原则(Liskov Substitution Principle) | ||
里氏代换原则是面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP 是继承复用的基石,只有当派生类可以替换掉基类,且软件单位的功能不受到影响时,基类才能真正被复用,而派生类也能够在基类的基础上增加新的行为。里氏代换原则是对开闭原则的补充。实现开闭原则的关键步骤就是抽象化,而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。 | ||
3、依赖倒转原则(Dependence Inversion Principle) | ||
这个原则是开闭原则的基础,具体内容:针对对接口编程,依赖于抽象而不依赖于具体。 | ||
4、接口隔离原则(Interface Segregation Principle) | ||
这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。它还有另外一个意思是:降低类之间的耦合度。由此可见,其实设计模式就是从大型软件架构出发、便于升级和维护的软件设计思想,它强调降低依赖,降低耦合。 | ||
5、迪米特法则,又称最少知道原则(Demeter Principle) | ||
最少知道原则是指:一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。 | ||
6、合成复用原则(Composite Reuse Principle) | ||
合成复用原则是指:尽量使用合成/聚合的方式,而不是使用继承。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
//强引用和弱引用 | ||
__strong: 强引用,持有对象; //默认 | ||
__weak: 弱引用,不持有对象; | ||
|
||
1、强引用可以释放对象,但弱引用不可以, | ||
因为弱引用不持有对象,当弱引用指向一个强引用所持有的对象时,当强引用将对象释放掉后,弱引用会自动的被赋值为nil,即弱引用会自动的指向nil。 | ||
代码说明: | ||
// | ||
// main.m | ||
// ARC中的强引用和弱引用 | ||
// | ||
// Created by on 15/3/31. | ||
// Copyright (c) 2015年 apple. All rights reserved. | ||
// | ||
|
||
#import <Foundation/Foundation.h> | ||
|
||
int main(int argc, const char * argv[]) { | ||
@autoreleasepool { | ||
id __weak obj0 = nil; | ||
if (YES) { | ||
id obj1 = [[NSObject alloc] init]; | ||
obj0 = obj1; | ||
NSLog(@"obj0: %@", obj0); | ||
} | ||
NSLog(@"obj0: %@", obj0); | ||
} | ||
return 0; | ||
} | ||
|
||
/* | ||
* 输出结果 | ||
* obj0: <NSObject: 0x1003066c0> | ||
* obj0: (null) | ||
* | ||
* 因为obj1生成的默认的为强引用(__strong),在超出if的作用域之后,obj1所持有的对象被释放, | ||
* obj0为弱引用,所以obj0不持有对象,在obj1对象释放后,obj0自动的被赋值为nil | ||
* 弱引用的特性是,不持有对象,即便是写成id __weak obj1 = [[NSObject alloc] init]; | ||
* 此代码系统会给与警告,因为这里obj1被声明成弱引用,那么在赋值之后,alloc出来的对象会被立即释放。 | ||
*/ | ||
|
||
2、一些集合类不应该增加其元素的引用,因为这会引起对象无法释放。 | ||
在这种情况下,我们需要使用弱引用(不用担心,内置的集合类 就是这么干的),使用 __weak 关键字。NSHashTable 就是一个例子。 | ||
当被引用的对象消失时,弱引用会自动设置为 nil。Cocoa 的 Notification Center 就是这么一个例子,虽然这已经超出纯 Objective-C 的语言范畴。 |
Oops, something went wrong.