OC의 유형, 구조 방법, 단리 대상 총결

3549 단어
1. 클래스의 우아한 사용.(클래스 방법은 구성원 변수에 접근할 수 없고 대상을 호출할 수 없는 방법)
먼저 간단하게 구분해 봅시다.
// 
- (void)print;
// 
+ (void)print;

일반적으로 클래스를 만들 때, 우리는 이 클래스 안의 방법을 더욱 잘 사용하기 위해서이다.
일반적으로 먼저 #import "xxx.h"를 사용하여 도입합니다.그리고 초기화합니다.다음과 같이 하십시오.
  Cal *cal = [[Cal alloc] init];
  //  
  int suq1 = [cal mulNum1:5 widthNum2:6];

이렇게 사용하면 OK입니다.그럼 좀 더 우아한 스타일링이 있을까요?있다!클래스 방법을 사용합니다.
다음은 하나를 사용합니다: 두 수의 화, 곱셈을 구하세요!설명우리는 하나의 종류를 정의할 수 있는데, 그 안에 좋은 방법을 정의할 수 있다.(그것의 우아함은 이 종류에서 스스로 초기화되었다는 데 있다.
- (int)pushNum1:(int)num1 andNum:(int)num2
{
    return num1+num2;
}
- (int)mulNum1:(int)num1 widthNum2:(int)num2
{
    return num2*num2;
}

+ (int)sumOfSquareWithNum1:(int)num1 andNum2:(int)num2
{
    Cal *cal = [[Cal alloc] init];
    int squl1 = [cal mulNum1:num1 widthNum2:num2];
    int squl2 = [cal mulNum1:num2 widthNum2:num2];
    int sum = [cal pushNum1:squl1 andNum:squl2];
    return sum;
}
 

그럼 이게 뭐가 좋아요?
#import "Cal.h"
//    
int sum = [Cal sumOfSquareWithNum1:5 andNum2:6];

보이시나요? 이렇게 쓰면 간결하지 않나요? 그리고 호출할 수 있는 클래스 안이 간결할 거예요.
2. 구조 방법의 사용.
구조: 자신의 모든 속성을 실례적으로 사용할 수 있는 방법을 만들고 자신을 되돌려주는 것이다.
그렇다면 그것의 장점은 또 무엇입니까?일단 이거 보고 보내주세요!보면 알겠지.
- (Cat *)init
{
    //  
    self = [super init];
    // [super init]  
    //  nil, 
    if (self != nil) {
        _name = " ";
    }
    
    return self;
}

- (Cat *)initWithColor:(char *)color
{
    self = [super init];
    if (self != nil) {
        _color = color;
    }
    return self;
}
- (Cat*)initWithName:(char *)name andColor:(char*)color
{

    self = [super init];
    if (self != nil) {
        _name = name;
        _color = color;
    }
    
    return self;
}

- (void)printInfo
{
    NSLog(@" :%s  :%s",_name,_color);
}


어떻게 사용하나요?클래스 변경 호출을 직접 사용합니다.
  Cat *cat = [[Cat alloc] init];

  //  ,   ( 。 set  )
  Cat *langMao = [[Cat alloc] initWithName:"langMao" andColor:"Blue"];
  [langMao printInfo];

3. 배당금 대상(전가)이 분리될 수 없는static
기억해라: (정적 클래스) 를 만들고 초기화해야 한다.(구성법과 다르네요! [슈퍼 init])
+ (Class *)defaultCar
{
    //class  nil
    static Class * class;
    if (car == nil) {
        class = [[Class alloc] init]; //  
    }
    return class;
}


역할: 단일 예시 대상을 만듭니다. 단일 예시 대상은 값을 전달할 수 있습니다.또는 어떤 대상을 만드는 데 자원을 너무 많이 쓰고 자주 사용할 때도 단일 대상을 만들 수 있습니다.
static  , 

이것은 약간 앞부분 Vuex의 원리 같다.상점을 먼저 만드는 거야.그리고 필요한'상품'을 도입한다.마지막으로 가져가서 교환해 주세요.
1. 상점 CarStore 만들기
//  “ ”
#import "Car.h"
//  
+ (void)printBrand;


2. 상품(다채로운) Car 만들기
@interface Car : NSObject
{
    char * _brand;
}
+ (Car*)defaultCar;
- (void)setBrand:(char*)brand;
- (void)printInfo;
@end


상품의 속성, 용도(방법)를 실현하다.
@implementation Car
+ (Car *)defaultCar
{
    //car nil
    static Car * car;
    if (car == nil) {
        car = [[Car alloc] init];
    }
    return car;
}
- (void)setBrand:(char *)brand
{
    _brand = brand;
}
- (void)printInfo
{
    NSLog(@"cat's brand is %s",_brand);
}


3. 장사하러 간다.(각종 매매법)
        //    ( )
        Car * car1 = [Car defaultCar]; // defaultCar  ( )
        [car1 setBrand:"bmw"];
        [car1 printInfo];

        Car * car2 = [Car defaultCar];
        [car2 printInfo];        

        //    ( )
        [CarStore printBrand]; //   car2

좋은 웹페이지 즐겨찾기