MonoTouch와 Objective-C를 어떻게 결정합니까? [닫은]
오늘 로컬 .Net 이벤트에서 모노 세션을 마친 후, 모노 터치 사용은 아이폰 개발의 대안으로 '터치되었습니다'. C #과 .Net에서 매우 편안하기 때문에 Mono 스택의 기발함에도 불구하고 매력적인 옵션처럼 보입니다. 그러나 MonoTouch의 가격은 400 달러이므로 iPhone 개발을위한 방법이라면 다소 찢어졌다.
누구든지 MonoTouch 및 Objective-C로 개발 한 경험이 있다면, 그렇다면 Objective-C를 배우는 것보다 훨씬 간단하고 빠른 MonoTouch로 개발하는 데 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는 작성해야하는 곳에서 더 장황한 경향이 있습니다 . ObjC로 작성할 필요는 없지만 C #으로 코드를 작성한다는 것을 알게 될 것입니다. 이 특정 주제는 책을 채울 수 있습니다. 나는 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 'm one), Interface Builder와의 더 나은 통합 메모리 관리에 대해 완전히 잊어 버리지는 않지만 좋은 수준의 여유를 얻습니다.
확실하지 않은 경우 Apple의 스택 (무료)을 잡고 MonoTouch eval 스택 (무료)을 가져옵니다. Apple의 dev 프로그램에 참여할 때까지 둘 다 시뮬레이터에 대해서만 실행되지만, 다른 것을 선호하는지 여부와 MonoTouch의 가치가 399 달러인지 여부를 파악하는 데 충분합니다.
그리고 열성적인 사람들의 말을 듣지 마십시오. 그들은 반대하는 기술을 사용하지 않은 경향이 있습니다. :)
이 게시물에는 MonoTouch 및 Objective-C를 시도하지 않은 개발자의 많은 의견이 있습니다 . MonoTouch를 사용해 본 적이없는 Objective-C 개발자 인 것 같습니다.
분명히 편견이 있지만, MonoTouch 커뮤니티가 무엇을하고 있는지 확인할 수 있습니다.
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 년 후입니다. 더 이상 그렇지 않으면 여전히 같은 방식으로 느낍니다. 물론, '도메인 특정 언어'는 사용하기에 잘못된 용어 일 수 있지만 여전히 작업중인 플랫폼에 대해 직접 작성하고 호환성 계층과 추상화를 최대한 피하는 것이 훨씬 낫다고 생각합니다. 코드 재사용 및 재 작업이 걱정되는 경우 일반적으로 크로스 플랫폼 앱이 수행해야하는 기능은 최신 웹 기술을 통해 달성 할 수 있습니다.
다른 사람들이 이미 말한 것에 덧붙이려면 (잘!) 내 감정은 기본적으로 걱정해야 할 버그 수를 두 배로 늘리고 MonoTouch의 버그를 iPhone OS의 버그에 추가하는 것입니다. 새로운 OS 버전을 업데이트하는 것은 평소보다 훨씬 더 어려울 것입니다. ck.
MonoTouch에서 유일하게 볼 수있는 유일한 사례는 C # 프로그래머와 C # 코드가 많고 iPhone에서 활용 해야하는 조직 입니다. (3500 달러로 깜박 거리지 않는 가게 종류)
그러나 처음부터 시작하는 사람에게는 실제로 가치가 있거나 현명한 것으로 볼 수 없습니다.
세 단어 : Linq to SQL
예, $ 가치가 있습니다.
허용되는 답변이 있어도 추가하고 싶은 것이 있습니다. 누가 Apple이 Mono Touch로 제작 된 징후가있는 앱만 거부하지 않습니까?
나는 Objective-C에 시간을 투자 할 것입니다. 주로 이런 사이트에서 얻을 수있는 모든 도움 때문입니다. Objective-C의 강점 중 하나는 C 및 C ++ 코드를 사용할 수 있다는 것 입니다. 잘 테스트 된 프로젝트가 많이 있습니다.
또 다른 것은 당신이 코드 (선택 언어)가 apple에 의해 지원된다는 것입니다. 예를 들어 iOS 5.x는 MonoTouch와 같은 타사 솔루션에 대한 지원을 제거합니까? 그러면 고객에게 무엇을 말 하시겠습니까?
Objective-C로 완전히 이동할 준비가되지 않은 경우 HTML5와 같은 플랫폼 독립적 솔루션을 사용하는 것이 더 낫습니까?
나는 몇 달 동안 MonoTouch를 사용하고 있으며 ObjectiveC에서 반 완성 된 앱을 이식하여 향후 어느 시점에서 Android를 지원할 수있었습니다.
내 경험은 다음과 같습니다.
나쁜 비트 :
Xamarin Studio. 나와 같은 인디 개발자는 Xamarin Studio를 사용해야합니다. 매주 나아지고 있으며, 개발자는 버그를 식별하고 수정하는 포럼에서 매우 적극적이지만 여전히 느리고 자주 중단되며 많은 버그가 있으며 디버깅도 매우 느립니다.
빌드 시간. 내 건물 큰 장치에서 디버깅 (연결) 응용하는 몇 분 정도 걸릴 수 있습니다, 이것은 거의 즉시 배포하는 엑스 코드와 비교됩니다. 시뮬레이터 (비 링크)를 빌드하는 것이 조금 더 빠릅니다.
MonoTouch 문제. 이벤트 처리로 인한 메모리 누수 문제가 발생했으며 뷰를 시작하거나 떠날 때 이벤트 연결 및 분리와 같은 누수를 방지하기 위해 몇 가지 추악한 해결 방법을 사용해야했습니다. Xamarin 개발자는 이와 같은 문제를 적극적으로 조사하고 있습니다.
타사 라이브러리. ObjectiveC 라이브러리를 변환 / 바인딩하는 데 많은 시간을 보냈지 만 Objective Sharpie와 같은 자동화 된 소프트웨어에서는 더 좋아졌습니다.
더 큰 이진. 이것은 실제로 나를 귀찮게하지는 않지만 언급 할 것이라고 생각했습니다. IMO 몇 가지 여분의 Mb는 요즘 아무것도 아닙니다.
좋은 비트 :
멀티 플랫폼. 내 친구가 핵심 코드베이스에서 내 앱의 Android 버전을 행복하게 만들고 있으며 병렬로 개발 중이며 Dropbox의 원격 Git 저장소에 커밋하고 있습니다.
.그물. C # .Net에서 작업하는 것은 Objective C IMO보다 훨씬 좋습니다.
모노 터치. iOS의 거의 모든 것이 .Net에 미러링되어 있으며 일을 처리하는 것이 매우 간단합니다.
Xamarin. 이 사람들이 실제로 모든 것을 개선하기 위해 노력하고 있으며 개발을보다 부드럽고 쉽게 만듭니다.
특히 크로스 스튜디오 개발을 위해 Xamarin을 추천합니다. 특히 Visual Studio에서 작동하는 Business 또는 Enterprise 에디션을 사용할 돈이 있다면 더욱 그렇습니다.
다른 플랫폼에서는 절대 필요하지 않은 iPhone 앱만 만들고 인디 개발자라면 XCode와 Objective C를 고수하고 있습니다.
C #과 Objective-C에 대한 경험이있는 사람이라면 대부분의 사람들에게 Xamarin은 그만한 가치가 있다고 말합니다.
C #은 정말 좋은 디자인 언어이며 C # API도 잘 디자인되었습니다. 물론 Cocoa Touch API (UIKit 포함)의 디자인도 훌륭하지만 언어는 여러 가지면에서 향상 될 수 있습니다. C #으로 작성할 때 Objective-C에서 동일한 코드를 작성하는 것보다 생산성이 높아질 수 있습니다. 이것은 몇 가지 이유 때문이지만 몇 가지 이유는 다음과 같습니다.
C #에는 형식 유추가 있습니다. 과제의 왼쪽에있는 유형을 "알지 않아도"되므로 유형 유추를 통해 코드 작성이 더 빨라집니다. 또한 리팩토링이 더 쉽고 더 절약됩니다.
C #에는 generics 가 있으며 , 이에 상응하는 Objective-C 코드와 비교하여 오류가 줄어 듭니다 (Objective-C에는 몇 가지 해결 방법이 있지만 대부분의 상황에서 개발자는이를 피할 수 있습니다).
최근 Xamarin은 Async / Await 지원을 추가하여 비동기 코드 작성이 매우 쉬워졌습니다.
MonoTouch는 대부분 CocoaTouch API를 매우 간단하게 구현합니다. 예를 들어, CocoaTouch 사용 경험이 있다면 MonoTouch에서 컨트롤 클래스를 어디에서 찾을 수 있는지 알 수 있습니다 (MonoTouch.UIKit에는 UIButton, UIView, UINavigationController 등의 클래스가 포함됩니다. NSData 등 ...).
Xamarin은 PhoneGap 또는 Titanium과 같은 솔루션과 달리 사용자에게 기본 환경을 제공합니다.
이제 Objective-C는 C #보다 몇 가지 장점이 있지만 대부분의 경우 C #으로 앱을 작성하면 일반적으로 개발 시간이 단축되고 코드가 깨끗 해지고 동일한 앱을 다른 플랫폼으로 이식하는 작업이 줄어 듭니다. 주목할만한 예외 중 하나는 OpenGL을 사용하는 고성능 게임 일 수 있습니다.
MonoTouch 라이브러리의 비용은 전적으로 요점을 벗어납니다. iPhone 앱에 Mono를 사용해서는 안되는 이유는 그것이 목발이기 때문입니다. 기본 도구를 배우지 않아도 귀사의 제품을 다운로드 할 가치가 있다고 생각할 이유가 없습니다.
편집 : 2010 년 4 월 14 일 MonoTouch로 작성된 응용 프로그램은 iTunes Store를 사용할 수 없습니다. 이것은 그대로입니다. Apple은 Qt와 같은 크로스 플랫폼 툴킷 또는 Adobe 자체의 System 7 툴박스 부분 재 구현을 사용하여 Mac에서 많은 얕은 포트를 보았습니다. 그 길고 짧은 것만으로는 충분하지 않습니다.
참고 URL : https://stackoverflow.com/questions/1583856/how-to-decide-between-monotouch-and-objective-c
'IT' 카테고리의 다른 글
SQL Server-INSERT 후 반환 값 (0) | 2020.03.25 |
---|---|
mysqldump 데이터 만 (0) | 2020.03.25 |
Java 비트 맵을 바이트 배열로 변환 (0) | 2020.03.25 |
jQuery는 첫 번째를 제외한 모든 테이블 행을 삭제합니다. (0) | 2020.03.25 |
Android에서 기본 활동으로 데이터 전송 (0) | 2020.03.25 |