摘要:
块对象相当于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 阅读全文