개발자라는 직업은 평생 공부해야 되는 직업인만큼 변화에 뒤쳐지지 않도록 노력하는 자세가 제일 중요하다

사실 회사다니면서 일하기 싫을때 대놓고 놀 수는 없으니 일하는척하면서 이런거 보면서 놀았다

아래 사이트들은 북마크해두고 자주 찾아가기를 추천한다



레딧은 한국의 디시인사이드 같은 개념이라 다양한 서브레딧이 존재하고 사용자 수가 많다

주로 언어나 프레임워크, 개발툴들이 새로 생기거나 업데이트 소식을 알려준다

이런거 읽은다음에 주변 개발자들한테 아는척하기 좋다

아니.. 아직 이게 나온걸 몰랐어? 이런식으로...


  • DailyProgrammer: 개발자에게 매일 문제 내주고 풀게 하는 서브레딧인데 추천한다



뉴스 글들도 많이 올라오지만 레딧 보다 조금 더 깊이 있고 공부할 만한 내용이 많이 올라오고 토론이 활발한 편이다

윈도우,닷넷계열쪽 글들이 많았는데 요즘 트렌드가 완전히 바뀌다보니 웹쪽 관련해서도 많이 올라온다

컴퓨터 사이언스쪽 글이 많이 올라오는 편인데 읽어봐도 뭐라는건지 내가 한심해지는 경우가 생긴다

옛날 사이트 느낌. 한국의 데브피아같은 느낌이랄까 노인분들이 많아서 빈티지한 느낌을 살리기 위해 일부러 안고치는 듯..





서비스명 그대로 좀 더 나은 개발자가 되기 위한 글들을 모아서 보여준다.

메일링 서비스 가입을 추천 한다




네이버 개발자들이 운영하는 블로그

영어로 보면 사실 익숙치가 않으니 한글로 보는게 젤 맘편해서 자주 들리는 편인데 사실 한글인데도 잘 못알아들을때가..

글이 주기적으로 자주 올라오는 편은 아닌데 양질의 글들이 많아서 웬만하면 다 읽어보는 걸 추천




이외에도 SlashdotLobsters 등의 뉴스 피드사이트 들이 있는데 중복되는 글들이 많고 이용자수도 적어서 비추천

위의 사이트들의 탑랭크 글만 꾸준히 봐도 도움이 많이 된다

신고

'Tool' 카테고리의 다른 글

개발자에게 유용한 뉴스,블로그 사이트  (0) 2017.08.10

감당할 수 없는 일들이 몰려들어서 몇달간 멘탈이 승천..

현실도피에 대인기피증에 우울증까지 다시 걸릴 뻔..

표현할데가 없어서 여기서라도 마음을 다잡으려 한다.


진짜 마음다잡고 다시 블로그를 다시 시작하려 하는데 사실 뭘 써야 할지 모르겠다.

기술서적을 열심히 써놓고 정리해놓으면 조금 지나서 옛날 기술이 되어버리고

디버깅이나 트러블슈팅을 적어놓는건 스택오버플로우로 다 가버리고..

그냥 내 생각에 있는 말이나 정리해보는 방향으로 가야되나 싶기도 하고..

누가 읽을진 모르겠지만 생각나는대로 매주 하나씩 포스팅 해보겠습니다.

신고

내 분야에서 최고가 되고 싶었던 시절이 있었다.

지금와서 생각해보면 그게 어떻게 되는지도 뭔지도 제대로 모른채 막연히 동경했었다.

내 한계와 주어진 환경에 쉽게 좌절하며 스스로 무너졌고 오랫동안 방황했다.


조금 변하려한다.

어디가서 손가락질 받지 않는 기본이 된 개발자가 되고싶다.

세상에 그리고 내가 좋아하는 사람들에게 조금이라도 더 필요한 사람이 되고싶다.

조금만 더 유쾌하고 열정적인 내가 되길.

신고

개발서적 굳이 사지말자.

돈을 아끼겠다는게 아니라 책은 언제나 느리다.

애플 개발자 사이트는 읽을 수만 있다면(..) 책보다 정확하고 친절하다.

개발자로 먹고살거면 그냥 영어로 된 개발문서정도는 보고 이해할수 있어야 하니깐 애플문서를 보러가자.

개발자 문서는 대부분 자주보는 단어들에 문법도 직관적이고 코드로 예시를 보여주기때문에 읽기 쉽다.

필자도 수능이후로 영어공부해본적없고 토익도 쳐본적도 없지만 그래도 대충 보면 이해가 가니 두려워하지말자.


1. 앱 개발을 시작하자.

일단 시작하자. 

언어에 대해 A부터 Z까지 다 공부하고 시작하면 재미도 없고 머리에도 안들어온다.

혹시 단순히 언어만 공부하겠다거나하면 2번으로 넘어가시라.

아래 사이트는 정말 친절하게 앱개발 시작하면서 개발하는법 순서대로 잘 되어있다.

일부 책들은 이거 순서대로 샘플코드 베껴서 책이라고 내놓은것도 봤다.


Learn the Essentials of Swift를 일단 보자

언어에 대해 모두 공부할 필요는 없지만 핵심적인 부분은 알고 넘어가야겠지.. 

튜토리얼 잘만들어놨다.

적혀있는 학습목표보고 다 숙지했으면 넘어가면 된다.

* 앱개발시에 Storyboard에 관한 내용은 언어와는 무관하다.

기존 스토리보드 개발방법을 안다면 크게 변하는 부분은 없는데

기존 개발 방법을 모른다면 그냥 유투브 강의찾아서 보면 좋다. 

책으로는 아무리봐도 이해가 안되더라..

개인적으로 스토리보드로 개발하면 자유도가 좀 떨어지고 하다보면 시간이 더 많이 걸려서 하드코딩하는데..

iOS9이후로 스택뷰가 생기고나서부터 본격적으로 쓸거같다.


2. 언어를 공부하자

대한민국 IT발전을 위해 번역해주시는 분들 정말 너무 감사합니다.

나도 영어 못해서 하다 막히면 보러가는데 약간의 오타나 오역이 있으니 ㅎㅎ

일단 원본 사이트보다 막히면 보는걸 추천


iBooks에도 해당 문서가 다있다.

목차이동도 쉽고 글자크기 조절도 되고 아이폰6 플러스로 보기에 무리가 없었다.

출퇴근중에 버스에 자리잡고 앉아서 읽고있으면 좀 지적으로 보일 수있는 부가효과가 있다.



애플에서 책이 나왔다.. 읽어보시라 App Development with Swift

https://itunes.apple.com/us/book/app-development-with-swift/id1219117996?mt=11



앱으로 공부하는데 알아야하는부분과 핵심을 잘 잡아준다.

전강의 3.29$인데 살만한거같다.

1,2강은 공짜니깐 한번 해보면 좋다.




신고

'iOS' 카테고리의 다른 글

Swift 공부방법  (0) 2016.02.02
TIP : Objective C Naming style.  (0) 2012.09.05
앱에서 다른 앱 실행할때.  (1) 2011.04.27
TIP : 투명한 버튼  (0) 2011.04.22
TIP : DB업데이트  (0) 2011.04.05
TIP : XCode SDK 4.0, 프레임 워크 추가  (0) 2011.03.23

자바스크립트에서 가장 많은 혼돈을 주는 것중의 하나가 바로 null과 undefiend이다. 다른 언어의 경우는 보통 null로 통일되어 있기 때문에 이 두 가지 타입에 대해 구분하는 것이 쉽지 않다.

  그렇다면, 먼저 undefined에 대해서 알아보자.

  변수가 선언된 적이 없거나, 선언이 되었더라도 아직 값이 할당되지 않았다면 undefined 인 상태이다. 즉, 특별한 값이 할당되기 전에 자동으로 설정하는 값이 undefined라고 생각하면 된다.

  1. // a 를 선언하지 않음  
  2. //console.log( a );  -- Exception 발생!!  
  3. console.log( typeof a );  // "undefined", typeof 연산자는 아래 참조  
  4.   
  5. // b 를 선언하였으나 값을 할당하지 않음  
  6. var b;  
  7. console.log( b );   // undefined  
  8. console.log( typeof b ); // "undefined"  
  9.   
  10. console.log( window.xxx );  // Exception 발생하지 않음, undefined  

  일단, 변수가 선언된 적이 없으면 Exception이 발생되고 스크립트 실행이 멈춘다. 특이하게도 객체(object)에 없는 속성을 참조할 때는 Exception이 발생하진 않는다. (물론, window.xxx() 처럼 객체에 존재하지 않는 메소드를 직접 호출하는 경우에는 Exception이 발생한다.)

     typeof  typeof는 연산자에 해당한다. 즉, +, -와 같은 연산자로 typeof val 로 해당 val의 타입을 문자열로 리턴하게 된다. 

      이 연산자는 메소드나 함수를 호출할 때, 특정 인자값이 존재하는지 검사하기 위해서 작성하는 다음과 같은 if문으로 인해 Exception이 발생하여 코드실행 자체가 멈추는 것을 방지하는 효과가 있다. (물론 null인지 여부는 다시 검사를 해야 한다.)

    if ( val != undefined ) { .. } 대신, if ( typeof val != "undefined" ) { ... }

      typeof연산자의 리턴 문자열은 다음과 같다.
    Type of valUndefinedNullBooleanNumberStringObjectFunction
    Result"undefined""object""boolean""number""string""object""function"



  그에 반해서 null은 명시적으로 개발자가 빈 값(empty)임을 지정하기 위해서 사용된다.

  1. var a = 10;    
  2. console.log( typeof a );    // number   
  3.     
  4. a = null;    
  5. console.log( typeof a );    // object    
  6.     
  7. a = undefined;    
  8. console.log( typeof a );    // undefined    

  그러나, 단순비교(==) 연산자는 null과 undefined를 동일하게 취급한다는 점을 기억하는 것이 좋겠다. 다음의 예에서 대부분의 결과값은 true이다.

  1. var a = null;  
  2.   
  3. console.log( a == null );  
  4. console.log( a == undefined );  
  5. console.log( a === null );  
  6. console.log( a === undefined ); // false  
  7.   
  8. var b = undefined;  
  9.   
  10. console.log( b == null );  
  11. console.log( b == undefined );  
  12. console.log( b === null );      // false  
  13. console.log( b === undefined );  
  14.   
  15.   
  16. console.log( typeof a );    // object  
  17. console.log( typeof b );    // undefined  
  18.   
  19. console.log( typeof x ); // 미선언변수, undefined  

  null과 undefined를 완벽히 구분하고자 한다면 동치비교(Strict Equal, ===)을 사용하는 것이 좋다. 우리가 기억해야 할 것은 의도를 담았느냐 그렇지 않으냐로 구분해야 된다는 점과, undefined 변수나 함수를 호출하면 Exception이 발생하므로 주의해야 한다는 점이다.

  따라서, 변수를 사용하기 전에 항상 var로 명시적으로 선언하여 사용하는 것이 좋은 코딩 습관이라 하겠다. - See more at: 


출처 : http://www.deadfire.net/jscript/projscript006.html#sthash.iHP2K1e7.dpuf

신고

MySQL 테이블 복사하기 


필드의 타입과, 필드의 숫자가 동일한 두 테이블간의 데이터를 복사하는 쿼리를 적어 놓는다. 

다른 두 데이터베이스간 테이블 복사하는 방법도 함께 적어 놓자. 


  복사할 테이블이 존재하지 않을경우

테이블을 생성후, 데이터를 복사

CREATE TABLE [대상 테이블명] SELECT * FROM [원본 테이블명] 



  복사할 테이블이 존재하는 경우 

기존의 데이터를 바로 복사 

INSERT INTO [대상 테이블명] SELECT * FROM [원본 테이블명]  



  다른 데이터 베이스 간의 테이블 값 복사 

mysql> INSERT INTO [대상 데이터베이스명].[대상 테이블명] 

        -> SELECT * FROM [원본 데이터베이스명].[원본테이블명] 




필드의 타입과 숫자가 다르면 당연히 복사가 안된다. ㅎ



  중복 데이터에 대한 에러를 무시하는 방법 

대상 필드가 기본키로 지정되어 있는데 중복 레코드로 인하여 에러를 발생시 다음과 같이 처리할 수 있다. 

mysql> INSERT ignore INTO .....


출처 : http://ra2kstar.tistory.com/109


신고

'Database' 카테고리의 다른 글

MYSQL 테이블 복사  (0) 2014.09.13
테이블복사  (0) 2011.11.23

시인은 스물한 살에 죽고 혁명가와 로큰롤 가수는 스물네 살에 죽는다.

우리는 이제 더 이상 시인도 혁명가도 로큰롤 가수도 아니다.

술에 취한 채 전화 부스 안에서 웅크리고 자거나 얼이 빠지도록 술을 마시거나

새벽 네 시에 도어즈의 레코드 볼륨을 소리 높여 듣거나 하는 일도 그만두었다.

생명보험에도 들었고 호텔의 바에서 술을 마시기도 하고

치과 의사의 영수증도 잘 챙겨서 의료비 공제를 받게 되었다. 이제는 스물여덟 살이니까.

 

책을 읽다 이 구절을 봤다.

난 뭐가 되고 싶었던 걸까.

시인도 혁명가도 로큰롤 가수도 되지 못하고.

이렇게 28살이 되다니...

아후.

개발을 너무 쉬었다...

머리가 빛나던 그때보단 머리는 더 나빠졌는데

되도안하는 실무경험 몇년 생겼다고 자만심만 더 커졌었던것 같다.

올해 처음으로 비주얼 스튜디오를 켰다.

신고

Ch 01. 기본 명명 관례#

모든 프로그래밍 언어는 만들어진 유래나 용도에 따라서 고유의 전통, 관례, 코딩 스타일을 가진다. 이 중에서도 클래스나 변수의 이름 짓기에 관한 것이 명명법(Naming)이다. Objective-C도 C/C++이나 Java와 구별되는 관례와 스타일이 있다. 여기서는 파일 이름, 클래스, 카테고리, 프로토콜, 메소드와 변수 이름을 짓는 기본 관례에 대해 설명한다.

1. 소스 파일 이름#

  • .h 파일
    클래스, 카테고리와 프로토콜 선언을 위한 헤더 파일
    ex) MyClass.h
  • .m 파일
    C와 Objective-C 소스 코드 파일 이름
    보통 인터페이스나 카테고리의 구현을 담는다.
    ex) MyClass.m
  • .mm 파일
    C, Objective-C와 함께 C++ 코드가 포함될 수 있다. Objective-C에서 실제로 C++ 코드를 호출하거나 기능을 사용할 때만 이 확장자를 사용한다.
  • 파일명은 대문자로 시작
    클래스, 카테고리와 프로토콜 이름은 대문자로 시작하며 주요한 클래스나 카테고리 이름과 파일 이름은 일치해야 한다.
    ex) MyClass
    => MyClass.h, MyClass.m
  • 프로토콜 이름
    클래스 이름이나 카테고리 이름과 겹칠 수 있다.
  • 카테고리 이름
    카테고리 이름은 다른 클래스의 카테고리 이름과 겹칠 수 있다. 카테고리를 별도로 저장할 때는 확장 대상인 클래스 이름을 앞에 붙여주는 것이 좋다.
    ex) MyClass의 NewCategory
    => MyClass_NewCategory.h
  • 메소드 이름은 소문자로 시작
    메소드 이름은 관례상 소문자로 시작한다
    ex) doSomething
  • '_' 로 시작되는 메소드 이름
    이런 유형의 변수는 애플사를 위해서 예약되므로 사용할 수 없다.

2. 변수 이름#

  • '_' 나 영문자로 시작
    변수 이름은 숫자나 특수 문자로 시작할 수 없다. 덧붙여, '__' (더블 언더스코어)로 시작하는 경우는 내부 용도로 사용하는 경우가 많아서 피하는 것이 좋다.
    ex) myVariable, __reservedVariable__
  • 예약어(keyword) 사용 불가
    컴파일러에서 사용하는 예약어(keyword, reserved word)는 변수 이름으로 사용할 수 없다. 예를 들어 for, while과 같은 것은 Objective-C 문법을 이루는 예약어이므로 사용할 수 없다.
  • 소문자로 시작
    변수 이름은 관례상 소문자로 시작한다.

3. 지역 변수 이름#

일반적으로 지역 변수(local variable) 이름은 클래스나 메소드의 명명 규칙을 따를 필요가 없다. 만약, 클래스나 객체의 변수와 구별하는 것이 필요하다면 소문자와 '_' 만을 사용하는 것이 좋다. 또한, 긴 메소드가 아니라면 약자를 사용하는 것도 좋은데 좁은 범위에서만 사용되기 때문에 문제가 되지 않기 때문이다. 덧붙여 i, j, k나 x, y, z와 같이 관습적으로 사용되는 이름도 있다.
int my_local_var;
int count;  
int i, j, k;  // counter
float x, y, z;  // coordinate

4. 약어의 사용#

만약 프로젝트 공통의 약어집이 있다면 코딩에서도 약어를 사용한다고 해도 의미의 혼동 없이 사용할 수 있다. 큰 프로젝트라면 공통의 용어집을 만들게 되는데 약어도 함께 정리하면 좋다. 예를 들어 다음과 같이 약어를 정의했다면 프로그램뿐만 아니라 DB 설계 등 여러 용도로 사용할 수 있다.
(단어)  - (의미) - (약어)
Customer - 고객   - Cstm
Identity - 아이디 - Id
Address  - 주소   - Addr

또는 다음과 같이 널리 사용되는 약어들은 의미가 명확하므로 풀어쓸 필요가 없다.

HTTP, FTP, HTTPS, 
JPG, TIFF, PNG, ... 
URL, XML, PDF, ...
ASCII, UTF8, EUC_KR, ...

Ch 02. 코코아 코딩 스타일#

1. 사상#

코코아(Cocoa) 개발 환경에서는 다소 길더라도 명확하고 모호하지 않은 이름을 권장한다. 이는 C/C++ 프로그램에서 약어를 선호하는 분위기와는 차이가 있다. 긴 이름은 입력을 다소 더디게 할 수 있으나 의미와 용도를 명확하게 전달할 수 있어서 대규모의 프로젝트에서 잠재적인 버그를 줄이는데 도움을 준다. 이러한 사항은 현재 제공되는 Objectivc-C 기반의 많은 프레임워크에도 적용되어 있어 그 예는 쉽게 접할 수 있다.

2. 클래스 이름#

클래스 이름은 항상 대문자로 시작한다. 덧붙여 Objective-C는 클래스를 큰 단위로 구별할 수 있는 namespace를 지원하지 않는다. 따라서, 모든 클래스의 이름은 적역적(Global)이며 프로그램에 하나밖에 없이 유일(unique)해야 하고 다른 것과 겹쳐서는 안 된다. 이 때문에 코코아 프로그래밍에서는 프레임워크별로 고유의 접두어(prefix)를 붙여서 클래스나 메소드 등을 구별한다. 다음은 코코아에서 사용되는 몇몇 접두어와 의미이다.
  • NS (Foundation, Cocoa Foundation)
    코코아 파운데이션 클래스의 접두어. 과거 NeXTstep의 개발에서부터 사용된 약자라고 한다.
  • UI (User Interface)
    IPhone UIKit 프레임워크의 접두어. User Interface의 약자로 생각된다.
  • CF (Core Foundation)
    접두어는 대부분 C API로 저수준의 함수를 감싸는 것들이다.

만약 자신만의 커스텀 라이브러리나 클래스를 생성한다면 기존의 프레임워크와 겹치지 않는 접두어를 하나 정해서 적용하면 된다. 예를 들어 회사 이름이 'Korean Company' 라면 접두어는 'KC' 가 될 것이고 'KCCompanyClass', 'KCGreetingProtocol' 와 같은 이름을 사용할 수 있다.

KCCompanyClass
KCGreetingProtocol
KCCompanyClass_Extension

3. 변수 이름#

변수 이름은 소문자로 시작하며 의미가 앞에 나온다. 덧붙여, 쉽게 타입을 추측할 수 있는 기본형, NSString, NSArray 등의 변수에는 변수 이름에 타입 정보가 꼭 포함될 필요가 없다.
NSString *companyName;
NSArray *memberList;
int memberCount;
BOOL isActive;

변수의 데이터 타입 정보가 중요한 경우에는 다음과 같이 끝에 타입을 추측할 수 있는 정보를 추가한다. 클래스에 하나밖에 없거나 해당 타입의 변수들 중에 가장 중심이 되어 자주 사용하는 것은 단순히 클래스 이름을 소문자로 변환하여 쓸 수도 있다.

UILabel *nameLabel;
UIWebView *contentWebView;
UIImage *productImage;

//클래스당 하나, 또는 주요 변수
UIView *view;  

4. 상수와 Enum값 이름#

기존 C 언어의 관례라면 상수는 어떻게 어디서 선언하든지 대문자를 사용한다. 단어 간의 구분은 '_' 로 해두면 좋다. 변수 이름과 같이 길고 명확한 이름을 권장한다.
#define MAX_MEMBER 30
static const float DEFAULT_VIEW_WIDTH = 480.0f;

Objective-C에서는 상수라고 해서 반드시 모두 대문자를 쓰는 것을 권장하지는 않는다. Class와 같이 대문자로 시작되는 이름을 사용하는 것이 더 일반적이다.
몇 가지 형식이 있는데 다음은 데이터 형 다음에 상수의 의미를 더하는 형식이다.

[(Prefix)+DataType+(값의 의미)]

// DataType + (값의 의미)
const CGPoint CGPointZero;
const CGRect CGRectZero;
const CGSize CGSizeZero;

보다 읽기 쉬운 형식은 다음처럼 접두어와 데이터 형 사이에 의미가 들어가는 것이다.

[(Prefix)+(값의 의미)+(데이터 타입)]

// (값의 의미) + DataType
enum {
   NSASCIIStringEncoding = 1,
   NSNEXTSTEPStringEncoding = 2,
   NSJapaneseEUCStringEncoding = 3,
   NSUTF8StringEncoding = 4,
   NSISOLatin1StringEncoding = 5,
   ...
};

5. 메소드 이름#

Objective-C의 메소드의 이름(Method Signature Keywords)에 인자(Parameter) 하나마다 구분자가 들어간다. C++이나 Java에서 메소드를 호출할 때 모든 인자가 괄호로 쌓여서 ',' 로 구별되는 것과는 다른 Objective-C의 고유한 문법이다. 이런 스타일의 문법은 다소 번거롭기는 하지만 이름을 잘 지어두면 메소드의 용도 뿐 아니라 전달해야 할 인자가 어떤 것인지 쉽게 이해할 수 있다. 다음의 예를 보자.
// Objective-C style
[myArray addObject:object atIndex:index];

// C style
myArray.addObjectAtIndex(object, index);

따라서 인자를 놓는 순서와 함께 이름을 짓는 것도 실제 사용하는 입장에서 어떻게 사용할지를 고려하지 않으면 안된다. 보통 대상을 앞에두고 방법이나 옵션을 나중에 두는 것이 무난하다. 덧붙여, 같은 이름의 메소드가 여러 개가 있는 경우 인자의 순서가 되도록 바뀌지 않는 것이 좋다.

// 주된 대상을 앞에, 옵션을 뒤에
[@"MyString" writeToFile:file atomically:YES]

// 옵션 추가하기
[@"MyString" writeToFile:file atomically:YES encoding:... error:error];

6. Getter와 Setter#

객체의 속성을 조회하는 메소드는 getXXX 형식을 사용하기 때문에 보통 Getter 메소드라고도 한다. 마찬가지로 속성값을 설정하는 메소드는 setXXX 형식이기 때문에 Setter 메소드로 부른다. Objective-C에서는 특별한 경우가 아니면 getter 메소드 이름을 'get' 으로 시작하는 것을 권장하지 않는다. 단순히 변수 이름과 같은 것을 사용해도 좋다. 이는 변수와 메소드를 특별히 구별할 필요가 없는 객체 지향적인 관점에서도 타당하다. 'get' 을 추가하는 때도 있는데 단순히 값을 반환하는 것이 아니라 내부에 추가적인 작업이나 부작용(side-effect)이 동반되는 경우이다. 반면에 setter 메소드는 일반적인 setXXX:(Type) 형식을 사용한다.
//get property
[myBoss firstName];
[myBoss lastName];
[myBoss age];

//추가적인 작업, 부작용이 동반되는 경우 
[myBoss getFullName]; 

// set property
[myBoss setFirstName:@"new Name"];
BOOL형 변수나 값에 대한 getter나 setter의 형식은 조금 달라진다. 변수 이름이 'isActive' 라면 getter아 setter는 각각 'isActive', 'setActive' 가 된다.
BOOL isHidden;
BOOL isEditable;

[myObject isHidden];
[myObject setHidden: YES];
[myObject isEditable];
[myObject setEditable: NO];

7. 반환값이 있는 메소드의 이름#

Objective-C에서는 Getter 메소드가 'get'으로 시작하는 것을 권장하지 않는 것처럼 반환 값이 있는 메소드의 경우도 동사로 시작하는 것을 권장하지 않는다. 다음의 예를 보자.
// 3번 index에 저장된 객체 반환
[myArray objectAtIndex:3];

// key에 매핑된 객체 반환
[dictionary objectForKey:key]

반환형이 있는 메소드는 다음과 같은 형식을 사용한다.

[type+Condition, Method+Input]

[NsString stringWithFormat:...];
[str rangeOfString:scan_str];

[NSSArray arrayWithObjects:...];
[arry indexOfObject:obj];

8. 이벤트와 관련된 이름#

이벤트(Event)에 관한 메소드나 변수는 조금 다른 형식의 이름이 사용된다. 이벤트가 발생하는 시점에 관한 조동사인 will, did가 Action 이름과 함께 사용된다. 'will' 은 동작이 일어나기 직전에 발생하거나 호출되는 것을 의미하고 'did' 는 동작이 일어난 다음의 시점을 뜻한다.

다음의 예를 보자. 객체나 상수인 경우 '접두어+(Will/Did)+Action' 형식이다.

// 상수
// (Will/Did)+Action+Type
NSTaskDidTerminateNotification
NSWindowWillMoveNotification

위와 유사하게 이벤트와 관련된 메소드는 '(will/did) + Action' 의 형식을 사용한다.

// 메소드 이름
// (Will/Did)+Action+Target
[view didAddSubview];
[view willAddSubview];


출처 : http://blessedsoft.org/wiki/Wiki.jsp?page=GuruBook.ObjectiveCES.codingconv


정리가 너무 잘되있어 퍼왔다.

함수명만 잘 정해놔도 따로 주석이 필요가 없더라.

가독성, 일관성 유지하는게 관건.

나같은 경우엔 거의 혼자만 아이폰 프로젝트 진행하다보니 일관성있게는 짜는데.. 다른사람들보기엔 어떨지 몰것넹...

신고

'iOS' 카테고리의 다른 글

Swift 공부방법  (0) 2016.02.02
TIP : Objective C Naming style.  (0) 2012.09.05
앱에서 다른 앱 실행할때.  (1) 2011.04.27
TIP : 투명한 버튼  (0) 2011.04.22
TIP : DB업데이트  (0) 2011.04.05
TIP : XCode SDK 4.0, 프레임 워크 추가  (0) 2011.03.23

Apple's web service operation was not successful

업로드 도중 이런 말이 나오고 그 밑에 두세줄 설명이 더 붙는다.

그냥 기달렸다가 좀잇다 해보자. 내 잘못아님.

신고

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/[USERNAME]/Library/Application Support/iPhone Simulator/[VERSION]/Applications/[ID]/test.app> (loaded)' with name '[NAME]''

시뮬레이터 리셋한다.

iOS Simulator -> Reset Content and Settings...
신고

+ Recent posts

티스토리 툴바