나는 시도해 본 결과, id 변수에 블록을 성공적으로 할당했다. 블록이 obj-c 객체입니까? 왜 우리는 nil 대신 NULL을 사용합니까? (객체 인 경우)Objective-C objects & blocks
답변
블록은 Objective-C 컨텍스트에서 객체로 사용할 수 있습니다. 즉 GCC 또는 LLVM으로 컴파일 된 순수 C 또는 C++ 프로그램은 블록을 사용할 수도 있지만 블록을 사용할 수는 없습니다. 객체로 사용할 수도 언어는 의미있는 방식으로 목표 - C를 이해하기 때문이다.)
일반적으로, 당신은 Class
ES 및 기타 포인터에 대한 NULL
에 대한 객체 nil
, Nil
를 사용해야합니다. 나는 당신이 누가 블록을 위해 nil
대신에 NULL
을 사용하고 있는지 알지 못한다. 그러나 이것은 Objective-C 컨텍스트에서 할 수있는 것이 아니다. (이전처럼 C 나 C++ 컨텍스트에서 nil
과 Nil
은 사용할 수 없다. Objective-C 런타임 헤더를 가져 오면 거기에서 NULL
을 사용할 것입니다.)
C 블록의 멋진 기능은 기본 Obj-C 오브젝트처럼 작동 할 수 있다는 것입니다. 블록을 id
으로 전송할 수 있습니다. 당신은 'copy', 'retain', 'release', 'autorelease'와 같은 블록 Obj-C 메시지를 보낼 수 있습니다. NSArray 또는 NSDictionary에 블록을 채울 수 있습니다. 그러나 블록을 실행할 시간이 왔으면 원래 유형으로 다시 캐스팅해야합니다.
NULL, nil, Nil 및 0은 0에 대해 서로 다른 단어입니다. 다른 하나를 선택하는 것은 동료 프로그래머를위한 문서 일뿐입니다. 그것은 컴파일러와 차이를 만듭니다.
일반적으로 NULL
은 null C 포인터를 나타내고 nil
은 null Obj-C 개체를 나타냅니다. 블록이이 두 가지이기 때문에 동료 프로그래머는 널 블록을 나타 내기 위해 NULL 또는 nil을 선택하는 것에 대해 조롱하지 않습니다. 그리고 컴파일러는 확실히 신경 쓰지 않을 것입니다.
- 1. ObjectiveC blocks Java equivalent
- 2. NumberFormatter - ObjectiveC
- 3. HttpURLConnection.getInputStream() blocks
- 4. InterfaceBuilder에서 이미지 시퀀스로드 -ObjectiveC
- 5. ObjectiveC 임의 숫자
- 6. Shapefile with ObjectiveC
- 7. MulticastDelegate in ObjectiveC
- 8. ObjectiveC project organization
- 9. Magento - moving blocks
- 10. Code :: Blocks git plugin
- 11. code :: blocks CPU 스파이크
- 12. SocketChannel.read() blocks 무기한
- 13. feof blocks on socket
- 14. 자바 스레드 : synchronized blocks
- 15. Code :: Blocks debugger
- 16. WebBrowser blocks in PivotControl
- 17. iOS RestKit Blocks
- 18. magento blocks post
- 19. ObjectiveC/iPhone의 TwitPic API 사용하기
- 20. UIScrollView에 이미지 배열 추가 ObjectiveC
- 21. objectivec : fb 게시물 댓글 오류
- 22. iphone objectiveC 할당/해제 질문
- 23. Python의 AppKit 및 ObjectiveC 대리자
- 24. 2D 동적 메모리 할당 - ObjectiveC
- 25. Objective-C Blocks - 객체로 사용
- 26. Beginning Code :: blocks and UnitTest ++
- 27. Code :: Blocks is it alive?
- 28. Code :: blocks, default input 정의
- 29. ASP.Net Persisting Objects
- 30. Sencha 3D objects
모든 예제 또는 샘플 코드에서 NULL이 표시됩니다. –
? 나는 항상 'nil'을 사용했습니다. – jrtc27
NULL, nil, 0 - Objective-C에서 모두 똑같습니다. – rmaddy