흑마 프로그래머의 ios 학습 총결산 - 10OC 언어의 구조 방법과 분류

4494 단어
구조 방법: 대상을 초기화하는 방법으로 대상 방법입니다. - 시작.구조 방법은 사실 대상을 초기화하는 방법이다.이전 객체의 초기화는 [Person new]로 수행됩니다.이 안의 new 방법은 너무 고정적이고 결합성이 너무 강해서 때때로 수요를 만족시킬 수 없다.사실 new 방법에는 alloc 방법과 init 방법이 융합되어 있다.실제로는 [[Person alloc] init];alloc는 클래스 방법으로 저장 공간을 분배하는 것이 목적이고 init는 대상 방법으로 대상을 초기화하는 데 사용된다.
재구성 방법의 목적: 대상을 만들기 위해 구성원 변수는 고정된 값이 있습니다.
재구성 구조 방법의 주의점: 1.부모 클래스의 구조 방법을 먼저 호출합니다 ([super init])
2. 하위 클래스 내부 구성원 변수의 초기화 Person을 진행한다.h 파일
 #import 

@interface Person : NSObject
@property(nonatomic,assign) int age;
@end

Person.m 파일
  #import "Person.h"
@implementation Person
   - (id)init
{
    if ( self = [super init] )
    { //      
        _age = 10;
    }
    
    // 3.              
    return self;
}

@end

main.m 파일
4
#import 
#import "Person.h"
#import "Student.h"

int main()
{
     Person *p = [[Person alloc] init];
    	  
	 return 0;    
}
이때 init 다시 쓰는 방법을 거친 후,age 초기값은 10.
   -init  
- (id)init
 {
    // 1.      super init  :                    
    self = [super init]; //      self
    
   
   // 2.         ,             
    if (self != nil)
    { //      
        _age = 10;
    }
    
    // 3.              
   return self;
 }

사용자 정의 구조 방법: 대상을 초기화할 때 일부 파라미터를 전송하여 구성원의 변수 값을 변화시킨다.사용자 정의 구조 방법의 규범: 1.반드시 대상 방법, 반드시 - 시작2.반환값은 일반적으로 id 형식입니다.메서드 이름은 일반적으로 initWith로 시작합니다. 예를 들면 다음과 같습니다.
- (id)initWithName:(NSString *)name;

- (id)initWithAge:(int)age;

- (id)initWithName:(NSString *)name andAge:(int)age;

대상이 init 방법을 초기화할 때 파라미터를 전달합니다.
Student *p = [[Student alloc] initWithName:@"Jim"andAge:29 ;
에 있습니다.m 파일에서 사용자 정의 구조 방법 구현
#import “Student.h”

@implementation Student

- (id)initWithName:(NSString *)name andAge:(int)age
{
    if ( self = [super init] ) //           , self!= nil;
    {
        _name = name;
        _age = age;
    }
    return self;
}

@end

main.m에서 대상 p가 초기화될 때 일부 파라미터를 전달하는데 이때 구성원 변수는 전달하는 파라미터 값이다.
#import 
#import "Student.h"

int main()
{

    @autoreleasepool {
        Student *p = [[Student alloc] initWithName:@"Jim" andAge:29 andNo:10];
        
    }
    return 0;
}

분류 - Category: 1.기본적인 용도는 어떻게 원래의 유형 모델을 바꾸지 않는 전제에서 유형을 확충하는 방법을 줍니까?두 가지 방식으로 분류(Category)를 계승하고 분류하는 것은 비슷한 점이 있고 본질적인 차이도 있다.2. 형식 분류의 성명: @interface 클래스 이름(분류 이름)//방법 성명 @end 분류의 실현 @implementation 클래스 이름(분류 이름)//방법 구현 @end
분류명은 원래 클래스의 오른쪽에 쓰이고 작은 괄호로 묶는다. 작은 괄호로 묶은 클래스명이라면 분류, 고정 형식이 틀림없다.
   NSString+Number.h 파일
#import 

@interface NSString (Number)

+ (int)numberCountOfString:(NSString *)str;

- (int)numberCount;

@end

 
NSString+Number.m 파일
#import "NSString+Number.h"

@implementation NSString (Number)

+ (int)numberCountOfString:(NSString *)str
{
	return [str numberCount];
}

- (int)numberCount
{
    int count = 0;
    
    for (int i = 0; i='0' && c<='9' )
        {
            count++;
        }
    }
    
    return count;
}

@end

 main
.m 파일
#import 
#import "NSString+Number.h"

int main()

{
    int count = [@"9fdsfds543543" numberCount];
    
    NSLog(@"%d", count);

    return 0;
}
3.  
             

하나의 방대한 종류는 여러 사람이 작성할 수 있어 팀워크에 더욱 유리하다
4. 분류의 사용 주의: Category는 원시 클래스의 실례 변수에 접근할 수 있지만 변수를 추가할 수 없고 방법만 추가할 수 있습니다.변수를 추가하려면 계승을 통해 하위 클래스 Category를 만들면 원시 클래스를 실현할 수 있는 방법을 고려할 수 있지만, 이렇게 하는 것을 추천하지 않습니다. 왜냐하면 이것은 원래의 방법을 직접 바꾸는 것이기 때문입니다. 이렇게 하면 더 이상 원래의 방법에 접근할 수 없습니다.

좋은 웹페이지 즐겨찾기