"Shangxuetang iOS 초등 비디오 튜토리얼"은 Objective-C 언어에 대한 기본 소개부터 고급 숙련도까지 Shangxuetang의 전체 비디오 튜토리얼 세트입니다. 이 과정은 Objective에 대한 심층적이고 자세한 이해를 제공합니다. -C 언어를 중심으로 Objective-C의 기본 구문, 객체지향 프로그래밍 아이디어, 캡슐화(클래스 선언 및 구현, getter 및 setter 메서드, 속성), 메모리 관리, 상속, 다형성, 분류, 프로토콜, 블록, NSNumber를 설명합니다. , 문자열, 배열, 사전, 날짜, 파일 관리, 복사 등
영상 재생 주소: http://www.php.cn/course/572.html
IOS 개발 과정의 어려움:
1.Swift 언어로? 그리고! 질문
인터넷에서 유용한 웹 페이지를 많이 검색했는데 모두 의견이 다르고 혼란 스럽습니다. 다행히 한 웹 페이지가 조금 더 명확합니다.
개인적인 이해를 더하자면 Swift 언어는 단순하고 우아해 보이지만 사실 그 안에는 많은 미스터리가 숨겨져 있습니다. 왜 그것을 사용합니까? 그리고! , 목적은 코드를 더 명확하게 만들고 컴파일러에 더 많은 잠재적인 오류를 찾을 수 있는 더 많은 단서를 제공하는 것입니다. Apple에서 출시한 언어로, Apple의 성격과 일치합니다. 컴파일러에게 결정을 내리기 위해 모호한 질문을 남기기보다는 코드를 작성하기 전에 먼저 파악해야 합니다.
2. 테이블 뷰의 논리
iOS 시스템은 오픈 소스가 아니기 때문에 테이블 기능을 구현하려면 시스템의 미리 정해진 루틴을 설치해야 합니다. 몇 가지 핵심 사항이 있습니다. 첫 번째는 두 개의 에이전트이며, 그 중 하나는 데이터 제공을 담당하는 가장 중요한 두 가지 인터페이스 기능입니다. 첫 번째는 시스템에 행 수를 알려줍니다. 두 번째는 테이블에 몇 개의 행이 있는지 시스템에 알려주는 것입니다. 각 행의 데이터가 무엇인지 시스템에 알려줍니다. 두 번째 함수는 여러 번 호출됩니다. 페이지에 10개의 행이 있다고 가정하면 이 인터페이스 함수는 10번 호출됩니다. 하지만 시스템은 사용자가 현재 보고 있는 페이지에 대한 데이터만 요청하기 때문에 한 페이지 이상을 넘을 수 없습니다. 테이블에 100개의 데이터가 있는 경우 지속적인 스크롤 과정에서 이전 데이터를 버리고 새 데이터를 채워서 구현됩니다.
이것은 보기용 프록시이고 다른 프록시는 사용자가 테이블의 항목을 클릭할 때 프로그램이 수행하는 작업입니다. 가장 일반적으로 사용되는 것은 개발자가 작성하기만 하면 됩니다. 여기에 자신만의 구현 코드를 입력하세요. didDeselected에 쓰지 않도록 주의하세요. 여기서 Deselected는 항목이 선택됨에서 선택 취소로 변경될 때 호출되는 인터페이스입니다. 처음 이 글을 쓸 때는 항상 뭔가 잘못된 것 같은 느낌이 들었지만 나중에서야 알게 되었습니다.
customer 유형 프로토타입을 사용할 때 내부의 라벨 객체에 어떻게 접근하나요? 태그 사용.
일반적인 테이블 예시. 테이블의 셀에는 최대 2개의 라벨만 있는데 프로젝트에 5개의 라벨을 넣어야 합니다. 그러면 코드에서 이러한 라벨을 어떻게 작동합니까? 인터페이스는 IB에서 끌어오기 때문에 Ctrl 드래그를 통해 셀의 레이블을 코드로 끌어올 수 없습니다. 나중에 각 라벨에 대한 태그 값을 설정한 후 코드에서 viewByTag
UILabel *name = [cell viewWithTag:TAG_NAME]; UILabel *singer = [cell viewWithTag:TAG_SINGER]; UILabel *code = [cell viewWithTag:TAG_CODE]; UILabel *lang = [cell viewWithTag:TAG_LANG]; UILabel *type = [cell viewWithTag:TAG_TYPE];
를 사용하면 해당 라벨을 얻을 수 있다는 예를 보았습니다.
나중에 우연히 알게 되었지만, 좀 더 번거롭습니다. 먼저 클래스를 사용하여 셀을 정의한 다음 인터페이스에서 수동으로 레이블 문을 만들어야 합니다. 스토리보드 내부에서 라인을 당길 수 있습니다.
이 문제는 이 페이지에서 논의됩니다.
테이블을 잘못 구성하면 앱이 쉽게 충돌할 수 있으며 다음과 같은 내용이 자주 표시됩니다.
Crash in this place: AppDelegate: UIResponder, UIApplicationDelegate
디버그에 의해 표시되는 정보는 다음과 같습니다.
*** 앱 종료 예정 포착되지 않은 예외 'NSInvalidArgumentException', 이유: '-[UINavigationItem tableView:numberOfRowsInSection:]: 인식할 수 없는 선택기가 인스턴스 0x7fd9d1760d70으로 전송됨'
그 이유는 실제로 테이블뷰의 데이터 소스가 연관되지 않은 것을 스토리보드에서 보고 직접 테이블에 연관시켰기 때문입니다. 이러한 종류의 충돌은 연결된 데이터 소스가 올바르지 않음을 의미하는 경우가 많으므로 먼저 연결을 끊을 수 있습니다. 내 이해에 따르면 이 맨 아래 레이어는 볼 수 없기 때문에 이 레이어와 연결되어 있고 다른 레이어를 해제한다고 추측할 수 있습니다. 결과적으로 유용한 개체를 찾을 수 없어 시스템이 충돌하게 됩니다. 이것이 바로 많은 숙련된 플레이어가 전략판 사용을 좋아하지 않는 이유입니다. 전략판은 제어하기 어렵고 일부 숨겨진 것을 찾기가 어렵기 때문입니다. 인터페이스 구조를 구현하기 위해 코드를 사용하는 것이 조금 더 번거롭기는 하지만, 어떻게 작성될지 충분히 아는 것보다 낫습니다. 이 단계에서는 여전히 그래픽 도구에 의존해야 합니다. 그래픽의 단점 중 하나는 두 프로젝트의 스토리보드가 비교할 수 없다는 것입니다. 튜토리얼을 단계별로 따라했지만 문제가 발생했습니다. 다운로드 선생님이 잘 하셨습니다. 프로젝트는 정상이고, 코드를 비교해 보면 차이가 없습니다. 하지만 스토리보드의 차이가 너무 커서 단서가 전혀 없습니다. 상대방의 파일을 자신의 파일로 직접 덮어쓰는 것은 오류로 가득 차 있습니다.
일반적으로 아직 실력이 부족해요. 앞으로는 탄탄한 기반을 깊이 있게 다져야 합니다.
3. 검색창의 논리
과거에는 검색창과 검색 표시 등의 개체가 분리되어 있었습니다. 나중에 Apple에서는 이를 통합하는 솔루션을 제공했으며, 단순화를 위해 검색 알고리즘도 개체에 캡슐화했습니다. 그것은 개발자의 일이다. 하지만 나와 같은 개발자에게는 정반대입니다. 반대로 가장 간단한 검색창이 나에게 더 적합하다. 왜냐하면 검색창의 내용이 변경될 때만 검색을 실행하고 테이블을 한 번만 새로 고치면 되기 때문이다. 그리고 번들로 제공되는 디스플레이 컨트롤러를 호출하려면 더 많은 프로토콜을 구현해야 하고, 결과 디스플레이를 출력하는 테이블 뷰 컨트롤러도 제공해야 하는데, 정말 어지러워요. Apple의 공식 정보에는 구현 예도 제공되어 있지만 이 예 자체는 매우 복잡하고 여러 뷰 컨트롤러가 포함되어 있습니다.
이 페이지에서 제공하는 방법이 나에게 더 적합합니다.
이것은 Apple이 주도하는 접근 방식입니다. 그들은 이전 접근 방식을 제거하고 이제 ui 검색 컨트롤러 사용을 권장합니다. 그러나 이러한 변경의 배경 이유는 무엇입니까? 별로 유용하지 않은 것 같습니다.
4. IB를 사용하여 인터페이스를 만들거나 코드로 구현하시겠습니까?
코드를 사용하여 컨트롤의 크기를 설정하면 다른 화면에 적응할 때 문제가 발생할 수 있습니다. 자동 크기 조정 부분을 수행하는 방법을 아직 연구하지 않았습니다.
하지만 코드를 사용하여 인터페이스를 만드는 것은 생각만큼 어렵지 않습니다. 실제로 인터페이스의 컨트롤을 개체로 처리하고, 개체의 친숙도를 설정하고, 개체를 뷰에 추가하면 됩니다. 관련 대리인을 설정하면 괜찮습니다.
Guo Chongzhi 선생님은 젊고 유망하며 젊은 사람들의 취향에 더 부합합니다. 그의 강의는 상대적으로 편안하고 자연스러워서 우리가 편안하고 더 잘들을 수 있습니다.
위 내용은 Shangxuetang iOS 기본 비디오 자료 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!