비디오: 스마트폰 사진,동영상파일 USB메모리로 옮기는 방법 2024
제어되는 방식으로 인스턴스 변수를 정의 클래스 외부에서 사용할 수있게하려면 iOS 응용 프로그램 개발의 가장 좋은 방법은 접근 자 메서드 (> getters 및 setters ). 속성은 속성 지시문 @property와 @synthesize를 사용하여 선언적 방법을 제공합니다. 선언적 스타일을 사용하면 코드를 작성하지 않고 프로그램을 무언가하게 만들 수 있습니다. 코드는 작성되었지만 컴파일러 (자동으로 접근 자 메서드를 생성 함)가 사용자가 아닌 사용자가 작성합니다.
시작하려면 StackOfInteger 클래스의 인터페이스에서 속성을 선언해야합니다. 다음 스 니펫은 @property 컴파일러 지시문을 사용하는 방법을 보여줍니다.
@interface StackOfInteger: NSObject {@protected // 이것은 기본 NSMutableArray * 요소입니다. @private int last;} @property (읽기 전용, 원자 적) int stackPointer; … 다른 StackOfInteger 메소드 -d
"
property "라는 용어가 메소드보다 변수에 더 가깝게 보이는 것처럼 보이더라도, 속성 정의는 메소드가 정의 된 섹션에 있습니다. 여기서 인스턴스 변수가 정의됩니다. 이 속성에는 원자 속성과 읽기 전용 속성이라는 두 가지 속성이 있습니다.
이 예에서 stackPointer 속성은 인스턴스 변수 last에 연결됩니다. synthesize 지시문은 다음과 같습니다.
@synthesize stackPointer = last;
이제 속성을 사용할 준비가되었습니다.
예제의 주요 함수 에서처럼 두 가지 방법으로 속성을 사용할 수 있습니다.접근 자 메서드를 사용할 수 있습니다.
printf ("Count of elements % dn", [myStack stackPointer]);
또는 도트 표기법을 사용하여 다음과 같이 동일한 작업을 수행 할 수 있습니다.
-
printf ("도트 표기법 % dn을 사용하는 요소 수, myStack.stackPointer);
-
소위 도트 표기법은 메서드 호출의 바로 간략한 표현입니다. 예를 들어 [instance method]와 같이 대괄호를 사용하는 대신 인스턴스를 작성하면됩니다. 방법.
접근 자 (getter 및 setter)의 이름은 명명 규칙을 따릅니다. getter 메소드는 속성의 이름입니다. 따라서 stackPointer 속성의 경우 getter 메서드도 stackPointer입니다. setter 메서드는 낙타의 접두사가 붙은 속성의 이름입니다. set - stackPointer의 setter 메서드 이름은 setStackPointer입니다.
낙타의 경우 철자법
(학기 중간에 대문자)을 사용하십시오. 따라서 스택의
S 는 속성 이름으로 대문자로 사용되지는 않지만 setter 메서드 이름에 대문자로 사용됩니다. 이 속성은 읽기 전용이므로 setter 메서드가 생성되지 않습니다. 이제 속성의 속성으로 이동할 시간입니다. nonatomic: 기본적으로 속성에 대해 생성 된 접근 자 메서드는 다중 스레드 프로그램에서 동시 액세스를 안전하게하기 위해 잠금을 포함합니다. 특히, 기본 동작은 원자 적입니다. 비 원자 속성을 사용하면 잠금이 사용되지 않습니다. atomic (원자 연산은 비 원자 속성이 없다고 가정 함)라는 속성이 없습니다.
readwrite:이 속성을 사용하면 읽을 수있을뿐만 아니라 쓸 수 있습니다. 게터와 세터 모두 합성시 사용할 수 있습니다.
-
readonly: 컴파일러는 getter 만 사용 가능하게 만듭니다.