2010-08-02 8 views
0

그래서 VB.NET에서 objective-C로 도약하려고합니다.Objective-C에 익숙하지 않음 -> 빠른 질문

내 유일한 중괄호 경험은 약간의 ActionScript 3입니다. 나는 * 캐릭터의 사용을 파악하는 데 어려움을 겪고 있습니다.

질문 1 :

내가 사용 튜토리얼은 서로 옆에 두 선이

..

IBOutlet UIPickerView *pickerView; 
NSArray* myArray; 

그것은 *이 기본적으로 참조 형식을 의미한다 나의 이해입니다. 첫 번째 줄의 변수 이름 앞에 오는 이유는 무엇입니까? 그러나 두 번째 줄에는 클래스 이름이 앞에 오는 이유는 무엇입니까? 클래스 선언에 대한

질문이 :

벌레의 큰 캔의
@implementation { 
Why is some code here 
} 

and other code here? 
@end 

답변

6
  1. - 대답은 구문이 해당 있다는 것입니다, 당신은 당신이 좋아하는 중 할 수 있습니다. 어떤 사람들은 하나 또는 다른 것에 대해 꽤 종교적이지만 컴파일러는 상관하지 않습니다.

  2. 나는 @interface이 맞습니까? 중괄호 안의 코드는 인스턴스 변수의 목록에 불과합니다. 중괄호 바깥쪽에 메소드 선언을 두는 곳이 있습니다.

Objective-C를 배우려면 C를 먼저 배우고 배우는 것이 좋습니다. 그런 다음 포인터 및 전달 선언과 같은 구문 및 C 개념을 이해하면 Objective-C를 매우 빠르게 선택할 수 있습니다.

+3

한가지 명심해야 할 것은 각 변수 (NSArray * oneArray, anotherArray;')가 여러 변수를 선언 할 경우 NSArray * oneArray; NSArray anotherArray;'). 변수 이름에'*'를 사용하는 것이 좋은 이유 일 수 있습니다. 또는 (내가하는 것처럼) 타입으로'*'를 선호한다면, 라인 당 하나 이상의 변수를 선언하는 것을 피하는 것이 좋습니다. :) – andyvn22

+0

@ andyvn22 절대적으로 동의합니다. –

+0

+1 @ andyvn22.그래서 종교적인 논쟁이 있습니다. –

2

변수 선언에 *을 붙이는 곳은 인 후 유형이어야합니다.

이 실제로 잘못 :

@implementation x { 
} 

@end 

할 수 있습니다 만 할 그 @interface과 : 주위

@interface x { 
    //ivars here... 
} 

//method declarations here... 

@end 
0

공백하여 컴파일러에 당신이 준 두 줄은 그래서 "*", 무관 동일 - 객체에 대한 두 포인터 (호출 한 참조 유형).

기본적으로 개체는 일반적으로 ""이 필요합니다. 기본 형식 (및 구조체와 같은 요소)은 그렇지 않습니다. 따라서 CGRect는 ""을 사용하지 않습니다. 그러나

그냥 당신에게 더 많은 약간의 혼동, 필요하지 않습니다 (그리고하지 수 있음) * 객체 "ID"에 대한 일반적인 참조가 - 당신이 그런 식으로 변수를 선언 할 것 같은 :

id delegate;