08 2013 档案
摘要:灰色背景的类只在OS X中支持。NSObject// Value ObjectsNSAffineTransformNSCalendarNSCacheNSDataNSMutableDataNSPurgeableDataNSDateComponentsNSDecimalNumberHandlerNSLocaleNSNullNSTimeZoneNSValueNSNumberNSDecimalNumberNSValueTransformer// XMLNSXMLParser// StringsNSCharacterSetNSMutableCharacterSetNSStringNSMutableStr
阅读全文
摘要:NSObjectUIAccelerationUIAccelerometerUIAccessibilityElementUIBarItemUIBarButtonItemUITabBarItemUIBezierPathUIColorUIDeviceUIDocumentInteractionControllerUIEventUIFontUIGestureRecognizerUILongPressGestureRecognizerUIPanGestureRecognizerUIPinchGestureRecognizerUIRotationGestureRecognizerUISwipeGesture
阅读全文
摘要:应用程序和多任务用户界面DataGlobalization & LocalizationConcurrencyCommunicationMediaGraphics & Animations
阅读全文
摘要:Cocoa是OS X和iOS操作系统的应用程序环境。它由面向对象类库、运行时和集成开发环境组成。The Cocoa EnvironmentCocoa是一个面向对象框架集,为OS X和iOS应用程序提供了一个运行时环境。Cocoa是OS X上一个出众的应用程序环境,并且是iOS上唯一的应用程序环境。Introducing Cocoa与所有应用程序环境一样,Cocoa有运行时和开发两个方面。在运行时方面,Cocoa应用程序展示用户界面,并且与操作系统其它可视化组件紧密集成;如在OS X中,这些应用有Finder,Dock及其它应用程序。但是,程序员更感兴趣的是开发方面。Cocoa提供了一个类库用于
阅读全文
摘要:原文:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CocoaFundamentals/Introduction/Introduction.html“What Is Cocoa?” introduces Cocoa from a functional and broadly architectural perspective, describing its features, frameworks, and development environment.从功能性和大体架构的角度描述Cocoa的各种
阅读全文
摘要:Creating Navigation Controllers–initWithRootViewController:–initWithNavigationBarClass:toolbarClass:Accessing Items on the Navigation StacktopViewControllerpropertyvisibleViewControllerpropertyviewControllersproperty–setViewControllers:animated:Pushing and Popping Stack Items–pushViewController:anim
阅读全文
摘要:iOS程序是基于MVC设计模式的,UIViewController是Controller的基类,一般我们通过继承这个类来实现自己的Controller,框架为我们提供了一些定义好的子类,如UINavigationController,UITabbarControllerCreating a View Controller Using Nib Files–initWithNibName:bundle:nibNamepropertynibBundlepropertyUsing a Storyboard–shouldPerformSegueWithIdentifier:sender:–perform
阅读全文
摘要:UIDatePicker,日期选取器typedef NS_ENUM(NSInteger, UIDatePickerMode) { UIDatePickerModeTime, // Displays hour, minute, and optionally AM/PM designation depending on the locale setting (e.g. 6 | 53 | PM) UIDatePickerModeDate, // Displays month, day, and year depending on the local...
阅读全文
摘要:UIPickerView,使用UIPickerViewDataSource来配置数据,UIPickerViewDelegate来控制内容。@interface UIPickerView : UIView @property(nonatomic,assign) id dataSource; // default is nil. weak reference@property(nonatomic,assign) id delegate; // default is nil. weak reference@property(nona...
阅读全文
摘要:UIControl,是所有可响应事件控件的基类,通过观察者模式实现了事件的处理,注册事件观察者// target是注册的观察者,action为响应方法,后边是观察的事件- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;发送事件// 触发某控件的事件- (void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event;控件具有几种状态,常用的是前面4种,看后面注释typedef NS_
阅读全文
摘要:UIView是程序中所有可见元素的基类。@interface UIView : UIResponder { + (Class)layerClass; // default is [CALayer class]. Used when creating the underlying layer for the view.- (id)initWithFrame:(CGRect)frame; // default initializer@property(nonatomic,getter=isUserInteractionEnabled...
阅读全文
摘要:UIResponder是程序中可响应类的基类,主要提供了与用户交互的一些事件和属性等。firstResponder表示当前与用户交互的控件,常用的方法resignFirstResponder使用控件失去响应。@interface UIResponder : NSObject { @private}- (UIResponder*)nextResponder;- (BOOL)canBecomeFirstResponder; // default is NO- (BOOL)becomeFirstResponder;- (BOOL)canResignFirstResponder; // ...
阅读全文
摘要:Cocoa touch layer包含了一些框架,它是专用于ios系统的,使用这些框架可以访问关键的设备特性。AddressBookUIEventKitUIGameKitiAdMapKitMessageUITwitterUIKit这些框架里面最主要的就是UIKit,它提供了ios应用程序最基本的部分。下面是UIKit的简易类继承图NSObjectUIResponderUIApplicationUIViewUIWindowUILabelUIPickerViewUIProgressViewUIActivityIndicatorViewUIImageViewUITabBarUIControlUIBu
阅读全文
摘要:UIApplication,用于应用程序级别的管理,实例是由系统自动创建的,通过类方法sharedApplication获取UIApplication实例。typedef NS_ENUM(NSInteger, UIStatusBarStyle) { UIStatusBarStyleDefault, UIStatusBarStyleBlackTranslucent, UIStatusBarStyleBlackOpaque};typedef NS_ENUM(NSInteger, UIStatusBarAnimation) { UIStatusBarAnimationNone...
阅读全文
摘要:NS_CLASS_AVAILABLE_IOS(2_0) @interface UISwitch : UIControl { @private id _control;}@property(nonatomic, retain) UIColor *onTintColor NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;@property(nonatomic, retain) UIColor *tintColor NS_AVAILABLE_IOS(6_0) UI_APPEARANCE_SELECTOR;@property(nonatomic, re...
阅读全文
摘要:@interface UIAlertView : UIView - (id)initWithTitle:(NSString *)title message:(NSString *)message delegate:(id /**/)delegate cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION; @property(nonatomic,assign) id/**/ delegate;.
阅读全文
摘要:Objective-C是动态语言,每个类class都会在运行时创建一个类对象。NSObject是根类,当然是最重要的一个类,提供的一些公共方法,顾名思议。@protocol NSObject// 是否引用同一对象- (BOOL)isEqual:(id)object;- (NSUInteger)hash;- (Class)superclass;- (Class)class;- (id)self;- (NSZone *)zone NS_AUTOMATED_REFCOUNT_UNAVAILABLE;- (id)performSelector:(SEL)aSelector;- (id)performS
阅读全文
摘要:Bundle是Cocoa 应用程序中资源的组织方法,它是一个以.bundle为扩展名的文件夹,Cocoa 提供了对它操作的方法。@interface NSBundle : NSObject {@private NSUInteger _flags; id _cfBundle; NSUInteger _reserved2; Class _principalClass; id _tmp1; id _tmp2; void ...
阅读全文
摘要:Cocoa中,通知中心实现的观察者设计模式。通过下面两个类实现通知的发送和接收。/**************** Notifications ****************/@interface NSNotification : NSObject - (NSString *)name;- (id)object; // 发送该通知的对象- (NSDictionary *)userInfo; // 额外的可选信息@end@interface NSNotification (NSNotificationCreation)+ (id)notificationWithName:(NSSt...
阅读全文
摘要:创建型模式创建型模式抽象了实例化过程。它们帮助一个系统独立于如何创建、组合、表示它的那些对象。类创建型模式使用继承改变被实例化的类,对象创建型模式将实例化委托给另一个对象。它们都将关于该系统使用哪些具体的类的信息封装起来。它们隐藏了这些类的实例是如何被创建和放在一起的。类创建型模式:Factory Method:定义一个用于创建对象的接口,让子类决定将哪一个类实例化,它使一个类的实例化延迟到其子类。对象创建型模式:Abstract factory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。Builder:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不
阅读全文
摘要:每一个描述了一个在我们周围不断重复发生的问题以及问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。模式要素:模式名称。模式的一个助词名。问题。模式应用的场景。解决方案。描述了设计的组成部分,它们之间的相互关系及各自的职责和协作方式。效果。描述了模式应用的效果及使用模式应权衡的问题。模式分类按目的原则,可分为创建型、结构型、行为型。创建型与对象的创建有关;结构型处理类或对象的组合;行为型对类或对象怎样交互和怎样分配职责进行描述。按范围原则,可分为类模式和对象模式。客户请求是使用对象执行操作的唯一方法,操作又是对象改变内部数据的唯一方法。型构:对象声明的每一个操作名、参数和返
阅读全文
摘要:Objective-C的对象都是动态创建的,Cocoa 采用了引用计数的技术进行对象生存周期的管理,对象新创建时引用计数为1,发送remain消息后对象引用计数+1,发送release消息后对象引用计数-1,当对象引用计数为0时,Objective-C运行会向对象发送dealloc消息进行销毁对象回收内存。注意:自己可以重写dealloc方法,但不要自己调用它。Objective-C提供了三种内存管理方式:manual retain-release(MRR,手动管理),automatic reference counting(ARC,自动引用计数),garbage collection(垃圾回
阅读全文
摘要:NSMutableArray *someObject = [NSMutableArray array];NSLog(@"%s:%d someObject=%@", __func__, __LINE__, someObject);[someObject addObject:@"foo"];NSLog(@"%s:%d someObject=%@", __func__, __LINE__, someObject); Table 1Preprocessor macros and for logging in C/C++/Objective-C
阅读全文
摘要:原文地址目录例子空格与格式空格与制表符行宽方法声明与定义方法调用@public与@private异常协议命名文件名Objective-C++类名分类名Objective-C方法名变量名注释文件注释声明注释实现注释对象所有权Cocoa与Objective-C特性成员变量应该为@private指明指定的初始化器重写指定的初始化器避免使用+new保持公有的API尽量简单#import与#include使用根框架创建对象时尽量使用autoreleaseAutorelease之后retainDealloc中应该按声明的顺序处理成员变量Setters中对NSString进行copy避免抛出异常nil的检查
阅读全文
摘要:Objective-C提供了几种常用的数据保存方案属性列表对象序列化和反序列化SQLiteCore Data属性列表plist中可存储的类型:NSArray, NSDictionary, NSString, NSData, NSDate, NSNumber,最常用的根类型是NSArray,NSDictionary这些类提供了读和写的方法, 同样提供的工厂方法- (id) initWithContentsOfFile : (NSString *) filePath;- (void) writeToFile: (NSString *) filePath atomically: ...
阅读全文
摘要:谓词定义了真值条件,对象通过谓词进行筛选,判断是否与条件相匹配。@interface NSPredicate : NSObject { void *_reserved;}// Parse predicateFormat and return an appropriate predicate+ (NSPredicate *)predicateWithFormat:(NSString *)predicateFormat argumentArray:(NSArray *)arguments;+ (NSPredicate *)predicateWithFormat:(NSString *)pr...
阅读全文
摘要:KVC提供了以字符串的方式访问对象的数据,由于要解析字符串,所以性能有损耗- (id) valueForKey: (NSString *) key;- (void) setValue: (id) value forKey: (NSString *) key;- (id) valueForKeyPath: (NSString *) keyPath;- (void) SetValue: (id) value forKeyPath: (NSString *) keyPath;Objective-C在运行时使用元数据进入对象查找相关的信息,valueForKey:首先,查找以-key或isKey命名的
阅读全文
摘要:类名必须是唯一的Objective-C中没有提供命名空间,所以公开的类一般都添加了前缀来避免类名的冲突PrefixFrameworkNSFoundation (OS X and iOS) and Application Kit (OS X)UIUIKit (iOS)ABAddress BookCACore AnimationCICore Image自定义的类应该使用三字母前缀对象创建约定NSMutableArray *array = [[NSMutableArray alloc] init];NSMutableArray *array = [NSMutableArray new];NSMuta
阅读全文
摘要:大多数错误都可以用NSError来进行描述- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;有时候是按引用传递NSError的- (BOOL)writeToURL:(NSURL *)aURL options:(NSDataWritingOptions)mask error:(NSError **)errorPtr; NSError *anyError; BOOL success = [receivedData writeTo...
阅读全文
摘要:块对象相当于C#中的匿名委托,是对一段代码的引用,@selector相当于C#中的委托,是对方法的引用。创建块对象 ^{ NSLog(@"This is a block"); }声明块变量 void (^simpleBlock)(void);变量赋值 simpleBlock = ^{ NSLog(@"This is a block"); };一起写的语法 void (^simpleBlock)(void) = ^{ NSLog(@"This is a block"); };对块对象的调用 simpleBlock(...
阅读全文
摘要:Objective-C是C的超集,C中的类型和操作在Objective-C中都是可用的。Foundation 框架提供了一些常用的struct。struct是值类型NSRancetypedef struct _NSRange { unsigned int location; unsigned int length;} NSRange;第一种初始化方法NSRange range;range.location = 11;range.length = 55;第二种方法NSRange range = {17, 55};第三种方法,使用框架提供的C函数,这种编程方式在objective-c开...
阅读全文
摘要:协议是对象行为的抽象,定义了消息合约。Objective-C中可以实现多个协议@protocol XYZPieChartViewDataSource- (NSUInteger)numberOfSegments;- (CGFloat)sizeOfSegmentAtIndex:(NSUInteger)segmentIndex;@optional- (NSString *)titleForSegmentAtIndex:(NSUInteger)segmentIndex;- (BOOL)shouldExplodeSegmentAtIndex:(NSUInteger)segmentIndex;@requi
阅读全文
摘要:类别类似于C#中的扩展方法,是对现在类进行行为的扩展,它不能进行数据扩展,也就是不能定义字段和属性;定义:#import "XYZPerson.h" @interface XYZPerson (XYZPersonNameDisplayAdditions)- (NSString *)lastNameFirstNameString;@end实现:#import "XYZPerson+XYZPersonNameDisplayAdditions.h" @implementation XYZPerson (XYZPersonNameDisplayAdditions
阅读全文
摘要:对象的数据是类内定义的字段,属性是对字段的封装,编译器会自动为属性生成相应的字段及读取方法。传统的定义方法@interface XYZPerson : NSObject{ @private NSString *_firstName; NSString *_name; float: _height;}- (NSString *) firstName;- (void) setFirstName : (NSString *) firstName;- (float) height;- (void) setHeight: (float) height;@end用属性的定义方法@i...
阅读全文
摘要:对象发送和接收消息 [someObject doSomething];someObject是接收者,doSomething是消息用指针跟踪对象值类型:NSInteger,int,float,double,char,BOOL,变量直接存储了它的值- (void)myMethod { int someInteger = 42; NSString *name = @"Bob";}@property float height;@property (copy) NSString *firstName;作为类的成员(字段,属性,上例中的height),它是作为对象的一部分分配到heap
阅读全文
摘要:Objective-C的定义分为两部分,声明部分在以扩展名为.h的文件中,实现部分在以.m为扩展名的文件中。类的成员包括:字段(现在基本上都使用属性了)、属性、实例方法和类方法。根类为NSObject。Objective-C中的类会在运行时创建为Class的实例声明部分@interface XYZPerson : NSObject // 带存储特性属性@property (nonatomic, copy)NSString *firstName;// 只读属性@property (readonly,copy)NSString *lastName;// 值类型属性@property float h
阅读全文
摘要:#import int main (int argc, const char *argv[]) { NSLog("%@", @"Hello Objective C"); return (0); }Objective-C是C的超集,C的特性都可以在objective c中使用以#开头的命令为预编译命令以@开头的命令为objective c专用的关键字#import 命令用于包含其它源码文件,它会对同一文件的多次包含进行智能的处理,确保只包含一次。后面跟是用于包含系统或其它框架的文件,跟" "是用于包含自己的源码文件。由于objectiv
阅读全文