iOS 개발로 중간에 전환한 개발자로서 두 달 간의 개발 경험으로 볼 때 Objective-C는 전혀 어렵지 않습니다. 제가 개발한 프로그램은 다음과 같은 변화를 겪었고, 득실을 정리하는 기회도 잡았습니다
가장 멍청한 헬로월드
xcode에서 새 프로젝트를 생성한 다음 Window Editor(Interface Builder, 줄여서 IB)를 열고 UILabel 구성 요소를 끌어서 "Hello World"라고 작성하면 완료됩니다.
코드 구성 이해
이름은 "objective-c"이지만, 이전에 작성한 C 언어와는 완전히 다른 것 같습니다. 초보자를 혼란스럽게 하는 무언의 규칙이 가득합니다.
#import 대신 #include을 사용하는 이유는 무엇입니까?
@property란 무엇인가요? 괄호 안의 (strong, nonatomic)에 어떤 이상한 화학 반응이 일어나나요? @interface에 속성을 선언한 후 왜 추가해야 하나요? @property@synthesize
이 단계에서는 기본적으로 초보 질문이 많이 집중되어 있습니다. 다행히 이러한 질문에 대한 답변은 온라인에서 쉽게 찾을 수 있으며, 다른 언어 기초가 있으면 이러한 문법을 쉽게 이해할 수 있습니다.
이 단계에서 작성한 코드는 기본적으로 모든 코드가 컨트롤러에 배치되어 있습니다. 하나는 제가 게을러서이고, 다른 하나는 Objective-C 개발 세계에서 코딩 스타일을 마스터하지 않았기 때문입니다. 그러니 스타일을 사용하지 마세요. 코드는
또는
로 채워질 수 있습니다. IBOutletIBAction그러나 코드가 작동하는 한 그만한 가치가 있습니다.
본질을 처음으로 엿보세요
코코아 프레임워크의 핵심 중 하나는
인데, 이는 중국어로 "대리자" 모드로 번역됩니다(직역하면 "에이전트" 모드입니다). 이 모델은 Cocoa의 독창적인 모델은 아니지만 최고의 용도 중 하나이기도 합니다.
모드는 delegate과 delegate 사이의 상호 작용 문제를 해결합니다. controllerview코드를 작성하다 보면
만 있으면 멋진 일이 많이 일어날 것 같은 생각이 들곤 합니다. 또한 iOS에서 언급한 이러한 기본 구성 요소는 더 이상 상호 작용 요구 사항을 충족할 수 없다는 사실을 알게 될 것입니다. 이때 기본 구성 요소 중 일부를 확장해야 할 수도 있습니다.
seDelegate기본 구성 요소를 확장하는 것은 매우 간단하며 SDK에는 우리를 위해 예약된 많은 인터페이스가 있습니다
. 보통 이때 이전에 작성한 추악한 코드를 보면 리팩토링을 시작하지 않을 수 없으니 계속해서 리팩토링을 해보세요.
override사용하기 쉽습니다
사실
세계의 숨겨진 규칙 중 일부를 이해한 후에는 API를 익히는 것 외에도 기본적으로 일반적인 도구 언어가 되었습니다.
그러나 자동 참조 계산 기능인 ARC는 xcode 4 이상에서 도입되었으며 기본적으로 켜져 있다는 점에 유의해야 합니다. 문제가 발생할 수 있습니다. 많은 초보자들은 시스템이 메모리를 관리하게 되면 메모리가 낭비될 것이라고 걱정합니다. 실제로 그 원리를 이해한 후에는 구현이 매우 간단하다는 것을 알게 됩니다. 실제로 아무도 객체를 참조하지 않으면 시스템이 자동으로 해당 객체를 삭제합니다. . 시스템에 맡겨두는 것도 메모리 조각화의 형성을 피할 수 있지만, 직접 구현한 메시지 큐 등 메모리 영역의 메모리를 자주 읽고 써야 하는 경우에는 release을 통해 직접 구현하는 것이 좋습니다. struct
그러나 그러한 구조체를 정의한다면
으아악
컴파일러는 Objective-C 객체를 구조체에서 참조할 수 없다고 무자비하게 말합니다. 왜일까요? ARC는 구조체의 참조 횟수를 제어할 수 없기 때문입니다. 하지만 구조체에서 객체를 참조해야 한다면
을 사용하여 포인터 void *를 저장할 수 있습니다.
으아악
그런데 위 코드에서
는 임시 변수일 뿐이지만 앞서 언급한 것처럼 구조체의 포인터가 가리키는 경우에는 [NSString stringWithString:@"Hello"]의 참조 횟수가 발생하지 않습니다. ARC
즉, ARC는 아무도 이 변수를 참조하지 않는다고 생각합니다. 아무 일도 일어나지 않으면 이 코드가 실행된 후 시스템이 이 메모리를 회수합니다. 이 포인터가 가리키는 메모리를 다시 호출하면
오류만 발생합니다. EXC_BAD_ACCESS
해결책은 실제로 매우 간단합니다. 예를 들어 현재
의 변수가 이 문자열을 가리키도록 설정하여 해제되지 않도록 할 수 있습니다. @interface
으아악
글쎄요, 얘기를 너무 많이 해서 좀 혼란스러워서 결국 ARC에 대해 불평했습니다. 마지막 결론은 시작이 빠르지만, 잘 익히려면 스스로 공부해야 한다는 것입니다.
첫 번째 레벨: object-c 구문을 3일 안에 성공적으로 연습할 수 있습니다
두 번째 계층: 이주 노동자 UI: UIView, UILabel, UIImageView, UITableView, UINavigationController 및 UITabBarViewController 사용. 귀하의 자격에 따라 연습하는 데 1~2개월이 소요됩니다.
세 번째 계층: 다양한 기능 API: 네트워크 요청, 지속성, 주소록, GPS, 이메일 API 및 다양한 API. 반년
네 번째 레이어: UI 발전: 화면 회전, 핵심 애니메이션, 사용자 정의 드로잉 뷰, 드로잉 컨텍스트 등 반년
레벨 5: 고급 기술: 런타임, Cocos, OpenGLES 등 아직 실습이 완료되지 않았으며 필요한 날짜도 아직 알려지지 않았습니다.
iOS 개발로 중간에 전환한 개발자로서 두 달 간의 개발 경험으로 볼 때 Objective-C는 전혀 어렵지 않습니다. 제가 개발한 프로그램은 다음과 같은 변화를 겪었고, 득실을 정리하는 기회도 잡았습니다
가장 멍청한 헬로월드
xcode에서 새 프로젝트를 생성한 다음 Window Editor(Interface Builder, 줄여서 IB)를 열고 UILabel 구성 요소를 끌어서 "Hello World"라고 작성하면 완료됩니다.
코드 구성 이해
이름은 "objective-c"이지만, 이전에 작성한 C 언어와는 완전히 다른 것 같습니다. 초보자를 혼란스럽게 하는 무언의 규칙이 가득합니다.
#import
대신#include
을 사용하는 이유는 무엇입니까?@property
란 무엇인가요? 괄호 안의(strong, nonatomic)
에 어떤 이상한 화학 반응이 일어나나요?@interface
에 속성을 선언한 후 왜 추가해야 하나요?@property
@synthesize
이 단계에서 작성한 코드는 기본적으로 모든 코드가 컨트롤러에 배치되어 있습니다. 하나는 제가 게을러서이고, 다른 하나는 Objective-C 개발 세계에서 코딩 스타일을 마스터하지 않았기 때문입니다. 그러니 스타일을 사용하지 마세요. 코드는
또는로 채워질 수 있습니다.
IBOutlet
IBAction
그러나 코드가 작동하는 한 그만한 가치가 있습니다.본질을 처음으로 엿보세요
코코아 프레임워크의 핵심 중 하나는
인데, 이는 중국어로 "대리자" 모드로 번역됩니다(직역하면 "에이전트" 모드입니다). 이 모델은 Cocoa의 독창적인 모델은 아니지만 최고의 용도 중 하나이기도 합니다.모드는
만 있으면 멋진 일이 많이 일어날 것 같은 생각이 들곤 합니다. 또한 iOS에서 언급한 이러한 기본 구성 요소는 더 이상 상호 작용 요구 사항을 충족할 수 없다는 사실을 알게 될 것입니다. 이때 기본 구성 요소 중 일부를 확장해야 할 수도 있습니다.delegate
과delegate
사이의 상호 작용 문제를 해결합니다.controller
view
코드를 작성하다 보면seDelegate
기본 구성 요소를 확장하는 것은 매우 간단하며 SDK에는 우리를 위해 예약된 많은 인터페이스가 있습니다override
사용하기 쉽습니다사실
세계의 숨겨진 규칙 중 일부를 이해한 후에는 API를 익히는 것 외에도 기본적으로 일반적인 도구 언어가 되었습니다.그러나 자동 참조 계산 기능인 ARC는 xcode 4 이상에서 도입되었으며 기본적으로 켜져 있다는 점에 유의해야 합니다. 문제가 발생할 수 있습니다. 많은 초보자들은 시스템이 메모리를 관리하게 되면 메모리가 낭비될 것이라고 걱정합니다. 실제로 그 원리를 이해한 후에는 구현이 매우 간단하다는 것을 알게 됩니다. 실제로 아무도 객체를 참조하지 않으면 시스템이 자동으로 해당 객체를 삭제합니다. . 시스템에 맡겨두는 것도 메모리 조각화의 형성을 피할 수 있지만, 직접 구현한 메시지 큐 등 메모리 영역의 메모리를 자주 읽고 써야 하는 경우에는
그러나 그러한 구조체를 정의한다면release
을 통해 직접 구현하는 것이 좋습니다.struct
으아악
컴파일러는 Objective-C 객체를 구조체에서 참조할 수 없다고 무자비하게 말합니다. 왜일까요? ARC는 구조체의 참조 횟수를 제어할 수 없기 때문입니다. 하지만 구조체에서 객체를 참조해야 한다면을 사용하여 포인터
그런데 위 코드에서void *
를 저장할 수 있습니다. 으아악는 임시 변수일 뿐이지만 앞서 언급한 것처럼 구조체의 포인터가 가리키는 경우에는
즉, ARC는 아무도 이 변수를 참조하지 않는다고 생각합니다. 아무 일도 일어나지 않으면 이 코드가 실행된 후 시스템이 이 메모리를 회수합니다. 이 포인터가 가리키는 메모리를 다시 호출하면[NSString stringWithString:@"Hello"]
의 참조 횟수가 발생하지 않습니다.ARC
오류만 발생합니다.
해결책은 실제로 매우 간단합니다. 예를 들어 현재EXC_BAD_ACCESS
의 변수가 이 문자열을 가리키도록 설정하여 해제되지 않도록 할 수 있습니다.
글쎄요, 얘기를 너무 많이 해서 좀 혼란스러워서 결국 ARC에 대해 불평했습니다. 마지막 결론은 시작이 빠르지만, 잘 익히려면 스스로 공부해야 한다는 것입니다.@interface
으아악첫 번째 레벨: object-c 구문을 3일 안에 성공적으로 연습할 수 있습니다
두 번째 계층: 이주 노동자 UI: UIView, UILabel, UIImageView, UITableView, UINavigationController 및 UITabBarViewController 사용. 귀하의 자격에 따라 연습하는 데 1~2개월이 소요됩니다.
세 번째 계층: 다양한 기능 API: 네트워크 요청, 지속성, 주소록, GPS, 이메일 API 및 다양한 API. 반년
네 번째 레이어: UI 발전: 화면 회전, 핵심 애니메이션, 사용자 정의 드로잉 뷰, 드로잉 컨텍스트 등 반년
레벨 5: 고급 기술: 런타임, Cocos, OpenGLES 등 아직 실습이 완료되지 않았으며 필요한 날짜도 아직 알려지지 않았습니다.
제안 1, 체계적으로 공부하지 마세요
제안 2, Hello World 작성부터 시작하여 앱을 하나씩 작성하고 사용법을 알아보세요
제안 3, 시중에 믿을만한 책은 없습니다
제안 4, 공식 문서와 샘플 코드를 읽어보세요
사진으로 알 수 있습니다! 기사를 읽어보세요: http://www.henishuo.com/ios-study-route/