objetive-cいくつかの論点

2511 ワード

一、実装クラスのプライベート属性と方法、すなわち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アプリケーション開発の第3課の52:32にあります.