2011-09-29 6 views
-1

저는 실제로 xcode에서 newby입니다. 나는 몇 가지 것을 나 자신으로 생각할 수 있지만, 어떤 일들이 무엇인지, 그리고 왜 그 일들이 그곳에 놓여 있는지에 관해 질문한다. 나는 많은 전자 서적을 읽고 자습서를 보았지만 결코 기본에 들어 가지는 않는다. "Add this, Click Here etc."xcode 기본 설명이 필요합니다.

누군가 나에게 몇 가지 질문에 대한 답을 줄 수 있습니까? 좋아요, iOS 앱은 대부분 Views에서 만들어졌으며,보기는 컨트롤러에 의해 제어됩니다. 각 컨트롤러에는 헤더 (.h) 파일과 모듈? 클래스가 있습니다. 파일 (.m). .h 파일에는 .m 파일에 사용 된 변수 및 함수의 선언이 포함되어 있습니다. 전체 앱은 "위임자"라고하는 마스터 "컨트롤러"에 의해 제어됩니다. .h 파일의 정의는 예를 들어 작업 IBAction 또는 IBLabel 또는 뭔가 일 수 있습니다.

은 무엇 나를 위해 문제를 제기하는 것은 예를 들어,이 라인이다 :

@class FlipsideViewController; 

@protocol FlipsideViewControllerDelegate 
- (void)flipsideViewControllerDidFinish:(FlipsideViewController *)controller; 
@end 

@interface FlipsideViewController : UIViewController 

@property (nonatomic, assign) id <FlipsideViewControllerDelegate> delegate; 

- (IBAction)done:(id)sender; 

왜 때때로 다른 뷰 컨트롤러에 위임 클래스가로드

@class MainViewController; 

무엇을, 않습니다 다음과 같은 의미를 무엇 않습니다

@interface 선언?

@interface flipAppDelegate : NSObject <UIApplicationDelegate> 

정말 바보 같은 질문에 대한

nonatomic, retain 

죄송 것입니다 만, 모든 튜토리얼은이 일을 건너 뜁니다.

+0

오 또한 "@synthesize"그게 무슨 일을합니까? 그것은 주 컨트롤러에 연결하는 방법입니까? – renevdkooi

답변

3

한 번에 하나씩 질문에 답변 해 드리겠습니다.

@interface 선언이란 무엇입니까?

인터페이스는 클래스를 선언합니다. 클래스를 선언함으로써 인스턴스 변수와 그 안에 들어있는 private/public 메소드를 지정한다는 의미입니다. 다시 말하지만, 헤더 파일에는 메소드의 선언 만 포함되어 있으며 메소드의 구현/본문은 모듈 클래스에 있습니다. 그래서, 여기 -

@interface에있는 FlipsideViewController는 : UIViewController에

클래스 FlipsideViewController는 서브 클래스 /는 UIViewController를 확장 /에서 유래. 즉 UIViewController 유형이지만 자체 기능을 추가합니다.

마찬가지로

@interface flipAppDelegate : NSObject <UIApplicationDelegate> 

NSObject의 서브 클래스와는 UIApplicationDelegate 프로토콜을 구현한다. 프로토콜은 본질적으로 클래스가 구현할 것을 약속하는 일련의 메소드입니다 (선택적 메소드가있을 수 있음). 다른 뷰 컨트롤러에 가끔 이유

대리자 클래스는

위임 패턴은 클래스가 대리자 프로토콜을 구현하는 다른 클래스에 작업을 위임 할 수 있습니다로드. 따라서 여기에서 FlipsideViewController은 대리자 객체의 인스턴스를 유지하므로 flipsideViewControllerDidFinish:을 호출 할 수 있습니다.

비 원자 무엇, 그것은 당신이 당신의 인스턴스 변수에 값을 설정할 때, 값의 참조 카운트가 증가하고 변수로 설정된다는 것을 의미합니다

유지한다. 또한 원자 적 연산으로도 발생하지 않습니다. 멀티 스레드 환경에서만 원자가 필요합니다.

@ synthesesize는 변수에 대한 getter와 setter를 생성하는 간단히 단축키입니다.

HTH,

하기 Akshay

0
  • 엑스 코드는 IDE (통합 개발 환경)
  • 목표 - C 언어를 =를 = ... YouTube 동영상 또는 매뉴얼을 따를 수 있지만, 그것은 나에게 많은 것을 가르쳐주지 않는
  • 코코아 터치, 미디어 프레임 워크, Core FrameWork = iOS 용으로 개발 된 프레임 워크

Objective-C를 배우는 것으로 시작하는 것이 좋습니다. 적어도 먼저 프라이머 : 튜토리얼 및 개발자를위한 애플에서 사용할 비디오의 풍부한 거기

https://developer.apple.com/library/ios/#referencelibrary/GettingStarted/Learning_Objective-C_A_Primer/_index.html

당신이 개발자 포털에 시작 할 수 있습니다.

2

정말 Apple에서 Objective-C Programming Language을 읽을 필요가 있습니다. 매우 간단하며 아키텍처, 개념 및 구문의 기본 사항을 실행합니다.

은 간단히 몇 가지 세부 사항을 해결하려면 : @class 지시어는이 헤더 파일의 가져 오지 않고 클래스의 이름을 선언하는 데 사용됩니다

  • . 이것은 프로토콜을 선언하는 .h 파일에서 종종 사용됩니다. 프로토콜에는 구현이 없기 때문에 다른 클래스 (.h 파일)의 인터페이스를 가져올 필요가 없습니다.
  • 프로토콜은 프로토콜을 "구현"하기 위해 클래스가 가져야하는 메서드와 속성을 선언하는 방법입니다.
  • @interface은 인터페이스 파일 (.h) 클래스를 선언한다. 클래스는 그것이 가질 메소드와 속성, 구현할 프로토콜, 상속받을 수퍼 클래스를 설명한다. 귀하의 예에서, 클래스는 flipAppDelegate이라고하며 NSObject 클래스의 모든 메서드와 속성을 상속하며 UIApplicationDelegate 프로토콜을 구현합니다.
  • 클래스 (.m) 파일에서 인터페이스 파일에 선언 된 모든 메서드와 속성을 (모든 코드로) 정의합니다. 자신이 선언 한 메서드와 속성과 구현하는 프로토콜을 포함합니다.
  • @synthesize은 클래스 구현 파일 (.m)에서 "합성"하기 위해 --- 인터페이스 (.h) 파일에 선언 한 모든 속성에 대한 코드를 자동으로 작성하는 데 사용됩니다. 일반적으로 속성에는 기본 접근 자 (현재 값을 반환하는 "getter"및 현재 값을 설정하는 "setter")가 필요하기 때문에 @synthesize을 사용하면 컴파일러에서 값을 저장하는 변수를 만들 수있는 바로 가기입니다. getter 메서드 및 setter 메서드를 자동으로 호출합니다.
관련 문제