[C#] MonoTouch와 Objective-C를 어떻게 결정합니까? [닫은]

오늘 로컬 .Net 이벤트에서 모노 세션을 마친 후, 모노 터치 사용은 아이폰 개발의 대안으로 ‘터치되었습니다’. C #과 .Net에서 매우 편안하기 때문에 Mono 스택의 기발함에도 불구하고 매력적인 옵션처럼 보입니다. 그러나 MonoTouch의 가격은 400 달러이므로 iPhone 개발을위한 방법이라면 다소 찢어졌다.

누구든지 MonoTouch 및 Objective-C로 개발 한 경험이 있고, 그렇다면 MonoTouch로 개발하는 것이 Objective-C를 배우는 것보다 훨씬 간단하고 빠르며 400 달러 가치가 있습니까?



답변

나는 최근 에이 질문 (그리고 그에 대한 변형)을 많이 보았습니다. 어떤 날 놀라게하는 것은 사람들이 응답,하지만 어떻게 몇 얼마나 자주 대답 .

나는 기본 설정을 가지고 있지만 (두 스택을 모두 즐긴다) 대부분의 “답변”이 잘못되기 시작합니다. 내가 원하는 것 (또는 다른 사람이 원하는 것)에 관한 것이 아닙니다.

MonoTouch의 가치를 결정하는 방법은 다음과 같습니다. 분명히 객관적 일 수는 없지만 열광적 인 것이 아니라고 생각합니다.

  • 재미 있거나 사업 적인가? 이 분야에서 컨설팅을 받으려면 399 달러를 매우 빨리 돌려받을 수 있습니다.

  • 당신은 내부에서 플랫폼을 배우고 싶습니까, 아니면 그냥 “앱”을 만들고 싶습니까?

  • 다른 dev 스택을 사용하면 재미를 얻을 수있을 정도로 .Net을 좋아하십니까? 다시 말하지만, 나는 두 스택 (Apple과 Mono)을 좋아하지만 MonoTouch는 그 경험을 훨씬 재미있게 만듭니다. 나는 Apple의 도구 사용을 중단하지 않았지만 주로 두 스택을 모두 즐기기 때문 입니다. 나는 iPhone을 좋아하고 .Net을 좋아합니다. 이 경우, MonoTouch는 매우 쉬운 도구였습니다.

  • C로 작업하는 것이 편안하다고 느끼십니까? 나는 Objective-C를 의미하지는 않지만 C-Objective-C C 이기 때문에 중요 합니다. 멋지고 멋지고 친숙한 OO 버전이지만 포인터가 heebie-jeebies를 제공하면 MonoTouch가 친구입니다. 포인터 (또는 C 등) 가 마음에 들지 않으면 개발자가 있다고 생각하는 naysayers를 듣지 마십시오 . 나는 IBM ROM BIOS Pocket Reference의 사본을 가지고 걸어 다녔고, 어셈블리를 작성하고 컴퓨터를 재미있는 비디오 모드로 강제하고 자신의 글꼴 렌더링 비트를 작성하고 (창의적으로 쓰레기) 창 시스템을 작성했을 때 나는 ‘ QuickBasic 개발자들이 우스운 생각이었습니다. 나는 이었다QuickBasic 개발자 (나머지 외에). 머저리에게 절대 포기하지 마십시오. C가 마음에 들지 않고 포인터가 마음에 들지 않고 가능한 한 수동 메모리 관리를 멀리하고 싶다면 ObjC에서 전혀 나쁘지 않습니다. .. MonoTouch. 그리고 멍청한 짓을하지 마십시오.

  • 사용자 또는 비즈니스를 타겟팅 하시겠습니까? 그것은 나에게 중요하지 않지만 Edge에는 여전히 사람들이 있으며 사실은 Apple의 스택을 사용하면 훨씬 작은 다운로드 패키지를 만들 수 있다는 것입니다. 나는 MonoTouch를 가지고 놀고 있었고, 압축되면 약 2.7MB (배포를 위해 앱을 제출 할 때 압축)-앱을 스토어에서 다운로드 할 때 압축하는 괜찮은 작은 앱이 있습니다. 다시 압축-따라서 앱이 10MB OTA 제한 아래로 들어올 것인지 알아낼 때 먼저 빨판을 압축하십시오-MonoTouch에 만족할 것입니다. 그러나 MT 행복은 제쳐두고 반 메가 대 거의 3 개 (예 : 거의 3 개)는 최종 사용자를 대상으로하는 경우 중요 할 수 있습니다. 엔터프라이즈 작업을 생각하고 있다면 몇 MB는 전혀 중요하지 않습니다. 과, MT- 기반 앱을 곧 매장에 제출할 예정이며 크기에 상관없이 문제가 없습니다. 전혀 귀찮게하지 않습니다. 그러나 그것이 우려 할만한 일이라면당신은 다음 애플의 스택이 하나의 승리.

  • XML이 작동합니까? 모노 터치. 기간.

  • 문자열 조작? 날짜 조작? .Net의 주방 싱크 프레임 워크에 익숙해 져있는 백만 가지 다른 것들이 있습니까? 모노 터치.

  • 웹 서비스? 모노 터치.

  • 구문 상으로는 둘 다 장점이 있습니다. Objective-C는 작성해야하는 곳에서 더 장황한 경향이 있습니다 . C #으로 코드를 작성한다는 것을 알게 될 것입니다. ObjC로 작성할 필요는 없지만 두 가지 방법으로 진행됩니다. 이 특정 주제는 책을 채울 수 있습니다. 저는 C # 구문을 선호하지만 Objective-C에 대한이 세상에 대한 초기 반응을 극복 한 후에는 그것을 조금 즐기는 법을 배웠습니다. 나는 (그것의 재미를 회담의 비트를 만드는 것입니다 C #을 / 자바 / 등으로 사용하고 DEVS에 대한 이상한.)하지만, 사실은 내가 목표 – C는 나를 행복하게 내 마음에 자리를 형성해야한다는 것입니다.

  • Interface Builder를 사용 하시겠습니까? 이 초기 버전에서도 IB로 UI를 빌드 한 다음 코드에서 UI를 사용하는 작업이 훨씬 적습니다. Objective-C / IB 방식으로 전체 단계가 누락 된 것처럼 느껴지고 Objective-C / IB 방식으로 전체 단계가 누락 되었기 때문에 확실합니다. 지금까지 필자는 충분히 테스트 한 적이 없다고 생각하지만, 지금까지 MonoTouch가 얼마나 적은 작업을 수행해야하는지에 대한 승자입니다.

  • 새로운 언어와 플랫폼을 배우는 것이 재미 있다고 생각하십니까? 그렇다면 iPhone은 많은 것을 제공 할 수 있으며 Apple의 스택은 안락한 영역에서 벗어날 수 있습니다. 일부 개발자에게는 재미가 있습니다 (Hi-나는 그 개발자 중 하나입니다-나는 그것에 대해 농담하고 제공합니다. 애플은 힘들었지 만 애플 툴을 통해 아이폰 개발을 배우는 것이 즐거웠습니다).

고려해야 할 것이 너무 많습니다. 가치는 너무 추상적입니다. 우리가 비용과 그 가치에 대해 이야기하고 있다면, 첫 번째 글 머리 기호에 대한 답이 나옵니다. 이것이 사업을위한 것이고, 일을 할 수 있다면, 돈을 바로 벌 수 있습니다.

그래서 … 그것은 내가 할 수있는만큼 객관적입니다. 이것은 당신이 스스로 물어볼 수있는 짧은 목록이지만 시작점입니다.

개인적으로 (잠시 객관성을 버려 보자), 나는 둘 다 사랑하고 사용합니다. 그리고 저는 Apple 스택을 먼저 배웠습니다. Apple의 세계를 이미 알고있을 때 MonoTouch를 사용하는 것이 더 쉬웠습니다. 다른 사람들이 말했듯이, 당신은 여전히 ​​CocoaTouch와 함께 일할 것입니다-그것은 단지 .Net 크기의 환경에있을 것입니다.

그러나 그 이상이 있습니다. MonoTouch를 사용하지 않은 사람들은 거기서 멈추는 경향이 있습니다. “그것은 랩퍼 블라 블라 블라입니다”– 그것은 모노 터치가 아닙니다.

MonoTouch는 CocoaTouch가 제공하는 것에 접근하는 동시에 .Net이 제공하는 것에 접근 할 수있게합니다. 일부 사람들은 더 편하게 느끼는 IDE (I는 그들 중 하나입니다), Interface Builder와의 더 나은 통합 메모리 관리에 대해 완전히 잊어 버리지는 않지만 좋은 수준의 여유를 얻습니다.

확실하지 않은 경우 Apple의 스택 (무료)을 잡고 MonoTouch eval 스택 (무료)을 가져옵니다. Apple의 dev 프로그램에 참여할 때까지 둘 다 시뮬레이터에 대해서만 실행되지만, 다른 것을 선호하는지 여부와 MonoTouch의 가치가 399 달러인지 여부를 파악하는 데 충분합니다.

그리고 열성 자들의 말을 듣지 마십시오-그들은 난간 기술을 사용하지 않은 경향이 있습니다 🙂


답변

이 게시물에는 MonoTouch Objective-C를 시도하지 않은 개발자의 많은 의견이 있습니다 . MonoTouch를 사용해 본 적이없는 Objective-C 개발자 인 것 같습니다.

분명히 편견이 있지만, MonoTouch 커뮤니티가 무엇을하고 있는지 확인할 수 있습니다.

http://xamarin.com

Objective-C와 C #에서 모두 개발 한 개발자의 기사를 찾을 수 있습니다.


답변

이전의 비슷한 질문에 대한 나의 대답 은 Objective-C를 배우는 것입니다. (또한 디버깅 지원을 잊지 마십시오)

이것은 아마도 일부를 화나게 할 것입니다. 그러나 정직하게 말하면, 진지한 개발을한다면 Objective-C를 배워야합니다. iPhone 개발에서 Objective-C를 모르는 것은 방해가 될 것입니다. 많은 예를 이해할 수 없습니다. Objective-C에 대한 실무 지식이 있으면 플랫폼 문서에서 훨씬 더 많은 것을 얻을 수 있지만 Mono의 단점을 처리해야합니다.

개인적으로, 나는 플랫폼의 모국어보다 Mono를 사용하는 데 필요한 정보의 양을 늘리는 입장을 이해하지 못합니다. 나에게는 다소 비생산적 인 것 같습니다. 이것이 매우 비싼 제안 (새로운 언어를 배우는 것)이라면, 새로운 언어를 배우는 것이 상당히 저렴한 제안이되도록 기본 프로그래밍 개념에 시간을 투자하는 것이 가치가 있다고 생각합니다.

다른 사용자 도 이것을 썼습니다 :


이제 모노 터치가 더 쉬워졌습니다. 그러나 나중에 더 어렵다.

예를 들어, 새로운 종자가 나오면 어떤 이유로 테스트해야하지만 MonoTouch를 중단해야합니까?

Mono를 고수함으로써 프레임 워크에 대한 리소스를 찾을 때마다 Mono와 함께 사용하는 방법을 정신적으로 바꿔야합니다. 앱 바이너리는 더 커지고 Objective-C에 몇 달이 지나도 개발 시간이 훨씬 빠르지 않으며 다른 앱 개발자는 네이티브 플랫폼을 사용하기 때문에 훨씬 더 많은 이점을 얻을 수 있습니다.

또 다른 고려 사항은 Objective-C보다 언어에 익숙하기 때문에 C #을 사용하려고한다는 것입니다. 그러나 iPhone에 대한 대부분의 학습 곡선은 Objective-C가 아니며 C #으로 호출 해야하는 프레임 워크입니다.

모든 플랫폼의 경우 iPhone에서 Objective-C 인 해당 플랫폼의 디자인 철학을 직접 표현하는 플랫폼을 사용해야합니다. GTK 프로그래밍에 익숙한 리눅스 개발자가 Windows 앱을 작성하고 싶었다면 C #을 사용하지 말고 GTK가 “더 쉬워 졌기 때문에”GTK를 고수 할 것을 진지하게 추천 하시겠습니까?



답변

모노를 사용하는 것은 목발이 아닙니다. iPhone OS에 추가되는 많은 것들이 있습니다. LINQ, WCF, Silverlight 앱, ASP.NET 페이지, WPF 앱, Windows Form 앱 간의 공유 가능 코드 및 Android 용 모노도 있으며 Windows Mobile에서도 작동합니다.

따라서 Objective-C를 작성하는 데 많은 시간을 할애 할 수 있습니다 (C #에서 정확히 동일한 샘플 코드가 OC보다 작성하기가 훨씬 적은 많은 연구에서 볼 수 있습니다). 다른 플랫폼에서 모두 복제하십시오. 필자는 작성중인 클라우드 앱에 많은 인터페이스가 있기 때문에 MonoTouch를 선택했습니다. iPhone은 그 중 하나 일뿐입니다. 클라우드에서 MonoTouch 앱으로 WCF 데이터 스트리밍을하는 것은 매우 간단합니다. 다양한 플랫폼에서 공유되는 핵심 라이브러리가 있으며 iPhone / WinMobile / Android / SilverLight / WPF / ASP.NET 배포를위한 간단한 프리젠 테이션 레이어 만 작성하면됩니다. Objective-C 에서이 모든 것을 다시 만드는 것은 모든 기능을 재사용하는 것이 아니라 복제해야하기 때문에 제품이 계속 발전함에 따라 초기 개발 및 유지 보수에 막대한 시간 낭비입니다.

MonoTouch를 모욕하거나 사용자에게 목발이 필요하다는 것을 암시하는 사람들은 .NET 프레임 워크를 손에 쥐는 것이 의미하는 바에 대한 큰 그림이 부족할 수 있습니다. 플랫폼과 장치에서 재사용 할 수 있습니다.

Objective-C는 흥미롭고 많은 공통 언어와 매우 다릅니다. 나는 도전과 다른 접근법을 배우는 것을 좋아하지만 그렇게 할 때 내 진보를 방해하거나 불필요한 재 코딩을 생성하지는 않습니다. iPhone SDK 프레임 워크에는 정말 큰 장점이 있지만 MonoTouch를 통해 완벽하게 지원되며 모든 수동 메모리 관리를 차단하고 동일한 작업을 수행하는 데 필요한 코드의 양을 줄이며 어셈블리를 재사용 할 수 있습니다. 다른 장치 및 플랫폼으로 이동할 수 있도록 옵션을 열어 둡니다.


답변

나는 전환했다. Monotouch 최소 3-4 배 빠른 앱을 작성해 보겠습니다 (Obj C의 이전 1 개월에 비해 월 4 개의 앱).

타이핑이 적습니다.

단지 내 경험.


답변

이것이 유일한 iPhone 앱이고 Mac 응용 프로그램 개발에 관심이 없다면 MonoTouch는 아마도 가치가 있습니다.

더 많은 iPhone 응용 프로그램을 개발하거나 Mac 고유 개발을 원한다고 생각한다면 Objective-C 및 관련 프레임 워크를 배우는 것이 좋습니다. 또한, 새로운 것을 배우는 것을 즐기는 프로그래머라면, 새로운 패러다임으로 공부해야합니다.


답변

개인적으로 Objective-C를 배우는 것이 더 좋은 시간이 될 것이라고 생각합니다.

한마디로 :

  • “Learning Objective-C”는 생각하기 어렵지만 처음 몇 주 후에도 즐길 수 있습니다.
  • 이미 많은 * & () {}; “C 스타일”구문에 익숙합니다. 어디에나
  • 애플은 아주 좋은 일을 문서화했다
  • Apple과 같은 방식으로 iPhone과 상호 작용하게되므로 일부 필터가 아닌 소스에서 직접 혜택을 얻을 수 있습니다.

Unity와 MonoTouch와 같은 프로젝트는 “시간을 절약”해야하지만 궁극적으로 도메인 고유의 언어를 배워야하며 때로는 사물을 회피해야합니다. 학습을 피하려고하는 언어를 배우는 한 (캘린더 시간으로) 필요한 모든 것이있을 것입니다. 결국 시간을 절약하지 못하고 일부 제품과 밀접하게 연결되어 있습니다.

편집 : 나는 .NET에 대해 부정적인 것을 암시하려고 결코하지 않았다. 내 요점은 기발한 objc 대괄호 표기법에 아직 익숙하지 않기 때문에 더 복잡한 계층을 추가하는 것이 실제로 나에게 의미가 없다는 것입니다.

2019 년 업데이트 : 7 년 후입니다. 더 이상 그렇지 않다면 여전히 같은 느낌입니다. 물론, ‘도메인 특정 언어’는 사용하기에 잘못된 용어 일 수 있지만 여전히 작업중인 플랫폼에 대해 직접 작성하고 호환성 계층과 추상화를 최대한 피하는 것이 훨씬 낫다고 생각합니다. 코드 재사용 및 재 작업이 걱정되는 경우 일반적으로 크로스 플랫폼 앱이 수행해야하는 기능은 최신 웹 기술을 통해 달성 할 수 있습니다.