흑마 프로그래머의 ios 학습 총결산 - 10OC 언어의 구조 방법과 분류
재구성 방법의 목적: 대상을 만들기 위해 구성원 변수는 고정된 값이 있습니다.
재구성 구조 방법의 주의점: 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를 만들면 원시 클래스를 실현할 수 있는 방법을 고려할 수 있지만, 이렇게 하는 것을 추천하지 않습니다. 왜냐하면 이것은 원래의 방법을 직접 바꾸는 것이기 때문입니다. 이렇게 하면 더 이상 원래의 방법에 접근할 수 없습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.