一、实现类的私有属性和方法,即JAVA中CLASS定义PRIVATE字段和方法
@interface DetailViewController () @property (nonatomic, retain) UIPopoverController *popoverController; - (void)configureView; @end @implementation DetailViewController @synthesize toolbar, popoverController, detailItem, detailDescriptionLabel; @synthesize webView; - (void)configureView { // Update the user interface for the detail item. detailDescriptionLabel.text = [detailItem description]; // webView load reauest [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:detailItem]]]; } ……………………
二、继承
OC不支持多重继承,继承是通过代理和协议相关属性来实现,代码如下
#import <Foundation/Foundation.h> @interface ClassA:NSObject { int n; } -(void) initVar; -(void) setVar:(int) m; -(void) print; @end @implementation ClassA -(void) initVar { n=406; } -(void) setVar:(int) m { n=m; } -(void) print { NSLog(@"n=%i",n); } @end @interface ClassB:ClassA -(void) printVar; @end @implementation ClassB -(void) printVar { NSLog(@"n=%i",n); } @end int main(int argc, const char * argv[]) { @autoreleasepool{ ClassA *clsA=[[ClassA alloc] init]; ClassB *clsB=[ClassB new]; [clsB initVar]; [clsB printVar]; [clsA setVar:10]; [clsA print]; [clsB printVar]; } return 0; }
三、类型判断
if([obj iskindOfClass:[NSString class]]){ //do something }
NSObject 方法:
-(BOOL) isKindOfClass: classObj 用来判断是否是某个类或其子类的实例
-(BOOL) isMemberOfClass: classObj 用来判断是否是某个类的实例-(BOOL) respondsToSelector: selector 用来判断是否有以某个名字命名的方法(被封装在一个selector的对象里传递)
+(BOOL) instancesRespondToSelector: selector 用来判断实例是否有以某个名字命名的方法. 和上面一个不同之处在于, 前面这个方法可以用在实例和类上,而此方法只能用在类上.
-(id) performSelector: selector 执行某个方法
此节内容在IPAD和IPHONE应用开发的第三课的52:32处