Objective-C 객체 대상(1)
7097 단어 Objective-C
1. 클래스와 대상
1.1 클래스 정의
대상을 대상으로 하는 프로그램 설계에는 두 가지 중요한 개념이 있는데 그것이 바로 클래스(class)와 대상(object)이다. 클래스는 특정한 대상의 추상적이고 대상은 구체적으로 존재하는 실체이다.
Objective-C 클래스를 정의하려면 분위기 2단계가 필요합니다.
인터페이스 섹션을 정의하는 구문:
@interface MyClass:NSObject { int count; id data; NSString* _name; } -(id)initWithString:(NSString)aName; +(MyClass)createMyClassWithString:(NSString* aName); @end @interface는 정의 클래스의 인터페이스 부분을 설명하는 데 사용되며 @end는 정의가 끝났음을 나타냅니다.그 다음에 이 클래스의 구성원 변수를 설명하기 위해 이 클래스 d와 함께 괄호 한 쌍을 묶는다.괄호 뒤의 부분은 이런 종류의 방법을 설명하는 데 쓰인다.정의 클래스의 인터페이스 성명 부분 재해 방지 헤더 파일에서
;
선언 방법:- (void)insertObject:(id)anObject atIndex:(NSUInteger)index
메소드 유형 ID: + 또는 -, + 은 메소드가 클래스 메소드이며 직접 유형만 호출할 수 있음을 나타냅니다. -이 방법은 실례적인 방법이므로 반드시 대상이 있어야만 호출할 수 있다.
반환 값 형식: OC에서 허용하는 모든 데이터 형식일 수 있습니다.
방법 서명 키워드: 방법 이름, 인삼 라벨, 사칭으로 구성되어 있습니다.OC는 뒤에 있는 모든 인삼에 인삼 라벨을 지정하는 것을 권장합니다. 이 인삼 라벨은 인삼의 역할을 잘 설명할 수 있습니다.
Objective-C의 방법 설명에서 모든 종류(void 포함)는 괄호로 묶어야 합니다.
구현 섹션을 정의하는 구문:
@implementation MyClass { int _count; id _data; NSString* _name; } -(id)initWithString:(NSString*)aName { // } +(MyClass*)createMyClassWithString:(NSString*)aName { // }
설명:
1.2 객체의 생성 및 사용
정의 변수:
*
창설 대상: [[ alloc] ]
alloc는 OC의 키로 클래스에 메모리 공간을 분배하고 창설 대상을 담당하며 초기화 방법을 호출하여 이 실례를 초기화합니다.모든 대상은 클래스 NSObject를 계승하고 모든 클래스는 기본적인 초기화 방법이 있습니다: init
.new 창설 대상 [ new]
OC 호출 방법의 문법은 [ : : ...]
1.3 self
self 키워드는 항상 이 방법을 사용하는 대상을 가리킨다.self 키워드의 가장 큰 역할은 클래스의 한 방법이 클래스의 다른 방법이나 구성원 변수에 접근하도록 하는 것이다.
#import <Foundation/Foundation.h>
@interface FKWorf:NSObject
{
NSString* _name;
}
-(void) setName:(NSString*)_name;
-(void) info;
@end
@implementation FKWorf
-(void) setName:(NSString*) n
{
self->_name = n;
}
-(void) info
{
NSLog(@" %@",self->_name);
}
@end
int main(int argc, char const *argv[])
{
@autoreleasepool
{
FKWorf* worf = [[FKWorf alloc] init];
[worf info];
}
return 0;
}
1.4 id 유형
임의의 형식의 대상은 id 형식의 변수에 복사할 수 있습니다
id p = [[FKWorf alloc] init];
[p info];
2. 방법 상해
OC에서 메서드의 속성:
2.1 형삼 개수 가변 방법
방법을 정의할 때 마지막 참조 뒤에 쉼표와 세 점(,...)을 추가합니다.이 인삼은 여러 개의 매개 변수 값을 받아들일 수 있음을 나타낸다.
길이가 변할 수 있는 형삼은 형삼 목록의 마지막 부분에만 있고 한 방법에는 길이가 변할 수 있는 형삼이 최대 한 개만 포함될 수 있다.
정의 문법:
-(void)test:(NSString*)name,...
참조를 획득하려면 다음과 같이 하십시오.-(void)test:(NSString*)name,...
{
va_list argList;
// name ,
if(name)
{
NSLog(@"%@",name);
va_start(argList,name);
NSString* arg = va_arg(argList,id);
while(arg)
{
NSLog(@"%@",arg);
arg = va_arg(argList,id);
}
va_end(argList);
}
}
3. 멤버 변수
구성원 변수는 클래스 인터페이스 부분이나 클래스 실현 부분에서 정의된 변수를 가리키며 OC의 구성원 변수는 모두 실례 변수이다.액세스 실례 변수
->
성명 실례 변수, 시스템은 실례 변수에 대한 기본 초기화, 기본 형식의 실례 변수는 기본적으로 0, 바늘 형식의 구성원 변수는 기본적으로 초기화nil4. 숨기기 및 포장
4.1 포장
봉인이란 대상의 상태 정보를 대상 내부에 숨기고 외부 프로그램이 대상 내부 정보를 직접 방문하는 것을 허락하지 않으며 이 클래스가 제공하는 방법 클래스를 통해 내부 정보에 대한 조작과 접근을 실현하는 것을 말한다.
4.2 액세스 제어부
액세스 제어부 4개:
@private
, @package
, @protected
, @public
4.3 @package 액세스 제어부
@package 수식의 구성원 변수는 현재 클래스와 같은 이미지에 접근할 수 있습니다. 같은 이미지는 컴파일한 후에 생성된 같은 프레임워크나 같은 실행 파일을 말합니다.
4.4 합성 액세스 방법
@property
명령을 사용하여 속성을 정의한다.@property
을 사용하여 속성을 정의하면 클래스 인터페이스의 괄호 안에 넣지 않고 @interface
, @end
사이에 넣는다.@property
표시기는 속성 정의의 맨 앞에 있습니다.@synthesize
명령을 사용하여 이 속성을 성명한다.상기 절차는 쌍의setter와getter 방법을 합성하고 클래스 실현 부분에서 getter 방법과 같은 구성원 변수를 자동으로 정의합니다.
<!--
h='syethesize的语法格式';a='@';n='使用';e=n+a+h;
document.write('<a h'+'ref'+'="ma'+'ilto'+':'+e+'">'+e+'<\/'+'a'+'>');
//-->
at syethesize 구문 형식 사용
@sythesize property [= ]
#import <Foundation/Foundation.h>
@interface FKUser:NSObject
@property (nonatomic) NSString* name;
@property NSString* pass;
@property NSDate* birth;
//-(void)setName:(NSString*) name;
@end
@implementation FKUser
@synthesize name=_name;
@synthesize pass;
@synthesize birth;
-(void)setName:(NSString*) name
{
self->_name=[NSString stringWithFormat:@"+++%@",name];
}
@end
int main(int argc, char const *argv[])
{
FKUser* user=[[FKUser alloc] init];
[user setName:@" "];
[user setPass:@"1234"];
[user setBirth:[NSDate date]];
NSLog(@"name=%@,pass=%@,birth=%@",[user name],[user pass],[user birth]);
return 0;
}
@property
과 유형 간에 괄호를 사용하는 추가 표시자assign
은 속성에 대한 간단한 값만 지정하고 부여된 값에 대한 인용 계수를 변경하지 않습니다.NSinteger 및 short float double 구조체 등 C 데이터 유형 atomic
(nonatomic
) 기본atomic, 합성 방법이 원자 조작인지 지정, 한 라인이 액세스 방법의 방법체에 들어간 후 다른 라인은 이 저장, 제거 방법에 들어갈 수 없으며 다중 라인 얼음법이 대상의 완전성을 파괴하지 않도록 한다.copy
은copy를 사용하고setter 방법으로 구성원 변수에 값을 부여할 때 부여된 대상을 복사하여 이 던전의 값을 구성원 변수에 부여한다.getter
, setter
합성된 Getter,setter 방법에 대한 사용자 정의 방법명 문법 지정 @property (assign,nonatomic,getter=wawa,setter=nana:) int price;
readonly
, readwrite
(기본값), readonly 지시 시스템은 Getter 방법만 합성 retain
속성 부여 시 원래 인용된 대상의 인용계수기는 1을 줄이고 부여된 대상의 인용계수는 1 strong
, weak
의 강한 인용, 약한 인용, 강한 인용이 부여된 대상을 가리키면name 대상은 자동으로 회수되지 않는다.약한 인용이 가리키는 대상은 unsafe_unretained
weak
과 비슷, unsafeunretained에서 인용한 대상이 회수되면 unsaferetained 바늘은 nil
으로 부여되지 않으며 프로그램 붕괴를 초래할 수 있습니다 4.5점 문법
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
PreferenceBundle에서 오른쪽 상단에 Respring 버튼을 클릭합니다.만나서 반갑습니다, Minazuki라고합니다. 프로필 이름 : Minazuki_dev Twitter : Repo : 아직 중학생이므로 말이 이상한 곳이 있습니다만 용서해 주세요… 🙏 theos (Mac이든 단품이든 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.