소셜 미디어 IOS 애플 리케이션을위한 방법을 정의하는 프로토콜을 사용하는 방법 - 인형

IOS 애플 리케이션을위한 방법을 정의하는 프로토콜을 사용하는 방법 - 인형

비디오: Introducing SwiftUI: Building Your First App 2024

비디오: Introducing SwiftUI: Building Your First App 2024
Anonim

프로토콜은 모든 클래스에서 구현할 수있는 메서드 집합을 정의합니다. 프로토콜은 클래스가 구현해야하는 인터페이스를 정의하는 것으로 생각하십시오. 프로토콜은 종종 위임 객체의 인터페이스를 지정하는 데 사용됩니다.

프로토콜 기능을 사용하면 다형성 클래스를 생성하기 위해 서브 클래 싱을 강제하지 않아도됩니다. Objective-C (C ++과 달리)는 클래스가 여러 수퍼 클래스를 가질 수 없도록합니다. 프로토콜은 다중 상속을 허용하지 않기 때문에 Objective-C에서 필수적인 기능입니다.

클래스가 프로토콜에서 메소드를 구현할 때, 클래스는 프로토콜에 일치한다고합니다. 프로토콜의 정의는 클래스의 인터페이스 정의와 유사합니다. 그러나 프로토콜에는 상위 클래스 나 인스턴스 변수가 없습니다. 다음은 후위 계산기 계산기 프로그램의 프로토콜 정의 (Printable)의 예입니다:

@protocol Printable - (void) printMe; // 기본 @ 옵션이므로 @required를 생략 할 수 있습니다. - (NSString *) printMeToString; -d

Objective-C 2. 0의 도착 (실제로는 큰 팡파르)으로 인해 프로토콜 메소드가 필수 (기본값) 또는 선택적 일 수 있습니다.

다음은이 프로토콜을 구현하는 것을 알리는 StackOfInteger의 선언은 다음과 같습니다 @interface StackOfInteger: NSObject의 … -d
다음은 StackOfInteger 클래스의 프로토콜의 구현입니다:

@implementation StackOfInteger; … StackOfInteger 다른 방법은 … /////////// 방법은 인쇄 프로토콜 //////////// 구현 - (무효) printMe {INT의 K를 stackCount = 요소 개수]; printMeToString 메서드는 선택 사항이므로 구현되지 않았습니다.


Last> % dlast) ! --1 ->

프로그램은 오브젝트 프로토콜에 부합하는지 여부를 테스트 할 다음 코드 (샘플의 메인 프로그램에서 촬영)이 시험의 예로 포함하는

의 printf ("테스트 적합성에있다. protocolsn "); ([myStack conformsToProtocol가: @protocol (인쇄)] 경우) {printf와 ("사용 프로토콜 methodsn은 "); [myStack printMe];} 다른 {NSLog은 (@"개체 프로토콜 %의 @ n을 준수하지 않는 " "NSLog (@"객체가 다음을 준수하지 않습니다: @protocol (Printable));} id someObject = [[PostfixCalculator alloc] initWithExpression: @ "44 55 *"]; 프로토콜 ").}는 myStack 오브젝트 프로토콜을 따르는 것이므로, printMe 및 printMeToString 메소드를 호출하는

보다 의미 예 있도록 이드 타입 여기서 someObject ()는 인쇄 프로토콜에 부합하지 않기 때문에, 테스트 적합성 실패.


respondsToSelector 메소드를 사용하여 선택적 메소드의 존재 여부를 테스트 할 수도 있습니다.

클래스는 프로토콜에 정의 된 메소드를 구현함으로써 프로토콜을 채택 할 수 있습니다. 즉, 인터페이스에서 프로토콜을 선언 할 필요가 없습니다. 그러나, 클래스가 프로토콜 메소드를 구현하더라도, 프로토콜을 따르지 않고 (999), 선행 적합성 테스트를 실패 할 것이다.

IOS 애플 리케이션을위한 방법을 정의하는 프로토콜을 사용하는 방법 - 인형

편집자의 선택

계획하기 - 인형

계획하기 - 인형

학습 계획 PHR 또는 SPHR 시험을 준비하는 데 사용할 수있는 도구입니다. 따라서 귀하의 학습 계획이 귀하의 필요에 맞게 이루어지기를 바랍니다. 고려해야 할 사항은 시험 날짜, 공부에 바칠 수있는 시간, 귀하의 구체적인 강점 및 목표를 포함해야합니다.

PHR / SPHR 시험을 치러야합니까? - 인형

PHR / SPHR 시험을 치러야합니까? - 인형

일부 유명한 이론가들은 시험을 치러야하거나 마지막 순간 (시험 전주 또는 밤)까지 공부를 연기하는 것은 쓸모 없다고 말합니다. 단기 기억력 증가는 종종 다른 곳에 정보가 손실되는 것을 희생합니다. 왜냐하면 심야 학습이 정상적인 수면 패턴을 위반하는 경우 특히 그렇습니다. 왜냐하면 ...

편집자의 선택

Squarespace에서 웹 사이트의 색상을 변경하는 방법 - 인형

Squarespace에서 웹 사이트의 색상을 변경하는 방법 - 인형

디자인 응용 프로그램을 사용하면 컬러 휠에서 색상을 선택할 수 있으므로 Squarespace의 스타일 편집기에서 색상을 선택하면 집에서 편안하게 느낄 수 있습니다. 그러나 컬러 휠을 한번도 본 적이 없다면 사용하기 쉽기 때문에 걱정하지 마십시오. 바퀴에서 색상을 선택하는 방법 색상을 변경하려면 ...

Squarespace에서 적절한 크기와 가치를 선택하는 방법 - 인형

Squarespace에서 적절한 크기와 가치를 선택하는 방법 - 인형

귀하의 웹 사이트의 너비와 Squarespace의 텍스트 및 이미지의 크기에 따라 작업 할 무제한 캔버스가있는 것처럼 느낄 수 있습니다. 어떤면에서 이것이 사실이지만, Squarespace는 웹 사이트의 경계를 기본 크기로 설정하는 좋은 일을합니다.

Squarespace에서 상점 설정을 조정하는 방법 - 인형

Squarespace에서 상점 설정을 조정하는 방법 - 인형

사이트 관리자 → 상거래 → 점포 설정으로 이동하면 화면 상단에 상점이 작동하지 않음을 나타내는 큰 노란색 상자가 나타납니다. 스토어를 판매하려면 스토어를 사이트에서 지불을 수락하는 데 사용되는 지불 처리 서비스 인 Stripe에 연결해야합니다. ...

편집자의 선택

이 코드 및 Minecraft - 더미

이 코드 및 Minecraft - 더미

로 무작위 인 경우 > 은 임의로 지정되며 Minecraft에서 코드를 작성할 때 임의의 정수를 사용하여 코드는 임의의 방식으로 동작합니다. 정수는 숫자입니다. LearnToMod의 임의의 정수 수학 블록은 코드가 실행될 때마다 두 숫자 (예 : 1과 10) 사이의 임의의 숫자를 선택합니다. Minecraft에서 정수 사용하기. The ...

Minecraft Minigame - dummy

Minecraft Minigame - dummy

를 디자인하면 게임을 디자인해야합니다. Gameplay Loop는 게임을 재미 있고 도전적이며 완벽하게 진행할 수있는 간단한 과정입니다. Gameplay Loop에는 네 부분으로 구성되어 있습니다. 시작 : 기본 장면을 만듭니다. 목표 : 이기기위한 방법을 추가하고 ...

Minecraft에서 물과 얼음 효과를 창조하기 - 더미

Minecraft에서 물과 얼음 효과를 창조하기 - 더미

일부 실제 물리학이 게임 내에서 작동한다는 것입니다. 예를 들어, 물을 가지고 얼음을 넣으면 얼어 붙습니다! 좋아요, 현실 세계에서 얼음을 첨가해도 물이 얼지 않을 수도 있지만 더 추워집니다. 당신은 이것을 확인하실 수 있습니다 ...