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


273

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

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


13
Apple이 개발 도구 제한을 완화했기 때문에 MonoTouch가 iOS에서 실행될 수 없다는 의견이 더 이상 유효하지 않다고 생각합니다. 참조 : apple.com/pr/library/2010/09/09statement.html
sivabudh

답변:


520

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

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

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 달러인지 여부를 파악하는 데 충분합니다.

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


50
와우, 로리, 시간을 내서 자세한 내용을 답변 해 주셔서 감사합니다. 내가 당신에게 말할 수있는 것은 두 가지 옵션을 모두 사용한 유일한 사람입니다. 나는 확실히 거기에서 시도를 줄 것이다. BTW, 가장 최근의 SO 팟 캐스트에 대해 들었습니다. 좋은 물건. 다시 감사합니다!
jamesaharvey

17
의견을 주셔서 감사합니다 :) 내가 본 무릎을 싫어하는 증오에 좌절했습니다. 계속해서 질문은 "어려운 시스템을 먼저 풀기 위해 바보가 숨어있다"라고 대답했다. 도움이되지 않고 모욕적입니다. MonoTouch는 거친 지점을 가지고 있지만 그 사람들은 천재적인 기록을 가지고 있습니다. MT는 빠르게 발전했으며 매일 더 아름답습니다. 나는 계속 말하고있다 : 그들에게 몇 달을 준다. 그들은 기능에 대해 신중하게 생각 하고 있지만 우리는 것을 볼 것이라고 생각 합니다. 나는 Apple의 스택을 좋아하지만 지금은 다른 놀이터가 있습니다. 좋은 일입니다. :)
Rory Blyth

4
@Stephan- "누락 된"말을하는 것이 옳지 않을 수도 있습니다. Cocoa로 작업을 완료 할 수 있습니다. API에 대한 자세한 내용입니다. .Net을 사용하면 문자열, 날짜, XML 등으로 작업하는 것이 훨씬 쉽습니다. 이러한 작업을 수행하는 .Net 방식에 대해 잘 알고 있다면 MonoTouch의 지원 범위와 조사하지 않은 경우 체크 아웃해야합니다. Cocoa로 할 수없는 일이 있지만 .Net으로 훨씬 쉽게 할 수있는 일이 많이 있습니다. 구문 분석은 보드 전체에서 더 쉬워집니다. 날짜 계산은 보드 전체에서 더 쉬워집니다.
Rory Blyth

3
또한 MT가있는 iPhone / iPad에서 자체 코드를 재사용하는 문제가 있습니다. 우리는 서버와 데스크탑에서 실행되는 일부 암호화 코드와 비즈니스 로직 코드를 가지고 있으며 MT로 다시 컴파일하고 iOS 클라이언트 앱에서 사용할 수 있습니다. 일부 프로젝트에서는 중요 할 수 있습니다.
Monoman

2
라이센스 비용은 400 달러이지만 매년 250 달러를 갱신해야하는 유지 보수 가입도 있다는 점도 고려해야합니다. 아마도 합리적인 가격이지만 여전히 고려할 가치가 있습니다.
Amc_rtty

62

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

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

http://xamarin.com

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


29
@NSResponder- MonoTouch 를 사용해 보셨습니까 ? v1.x 릴리스이며 실제로는 새롭고 이미 놀랍습니다. 댓글을 달기 전에 사용해보십시오. 큰 변화가 있습니다 (인터페이스 빌더 통합이 Xcode보다 훨씬 낫습니다). 그리고 거의 변화가 없습니다 (예를 들어 MT와 비교하여 사용자의 문서 폴더를 얻는 ObjC / Cocoa 방식 비교). 나는 여전히 애플의 스택을 사용하지만 MT는 아름답고 잠재력이 가득합니다. 진지하게-그냥 시도하십시오. 또는 Cocoa API가 어떻게 바인딩되었는지 살펴보십시오. 사용하지 않아도됩니다 . 배우지 않고 작업을 버리지 마십시오 .
Rory Blyth

예! 또한 새로운 C # 5.0 기능 중 일부는 objective-c에 비해 코딩을 더욱 재미있게 만듭니다.
harsimranb

39

이전의 비슷한 질문에 대한 나의 대답 은 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를 고수 할 것을 진지하게 추천 하시겠습니까?



12
의도하지 않게 MT를 잘못 표시 한 것 같습니다. GTK를 사용하여 Win 앱을 작성하는 것과는 전혀 거리가 멀지 않습니다. MT의 바인딩은 CocoaTouch에 매우 충실합니다. 실제로 일부 CT API 규칙에서 개선되었습니다 . 그러나 CT를 통한 Windows Forms 기반 추상화를 사용하여 앱을 작성하지는 않습니다. MonoDevelop가있는 MT는 Xcode보다 IB와의 통합이 더 좋으며 (원한다면) 절반의 코드만으로 동일한 작업을 수행 할 수 있습니다. 이진 크기가 개선되고 있으며 도구 (바인딩 생성기 등)가 항상 더 좋습니다. MT 앱 기본 앱입니다.
Rory Blyth

7
내 (명백하게) MT 팬보이 의견을 스스로 받아들이기를 기대하기보다는 예를 들기 위해 다음과 같은 일을 할 수 있습니다. 어리석은 배열 spelunking없이 Document 폴더에 대한 참조를 가져옵니다 (앱에는 항상 같은 위치에 하나의 문서 폴더가 있습니다. 모든 추가 작업이 "찾기"하는 이유는 무엇입니까?); Cocoa가 악취가 나는 .Net 프레임 워크를 사용하십시오 (NSDate, 누군가?). 엔터프라이즈 앱에 상용 기술 사용; 적절하고 현대적인 XML 비트를 사용하십시오 (Cocoa가 자동으로 문자를 질식시키고 멈추지 않고 충돌하지 않고 중지 하면 좋아 합니다 ).
Rory Blyth

8
내가 모든 것을 위해 그것을 사용할 것이라고 말하지 않았습니다. 나는 ObjC를 좋아하고 여전히 사용합니다. 그리고 성능에 문제가 있다면, 진행 상황을보다 세밀하게 제어 할 수 있습니다. 하지만 ... MT가 더 의미가있을 때가 있으며, 이것이 iPhone 을 엔터프라이즈 개발을위한 실용적인 옵션 으로 만들 것이라고 생각합니다 . 공중에 바위를 던지면 .Net 개발자를 맞을 것입니다. 대부분의 회사에는 사내 ObjC 개발자가 없습니다. 그리고 엔터프라이즈 작업을 위해 반드시 그럴 필요는 없습니다. MT는 웹 서비스 및 DB로 작업하기 가 훨씬 쉽습니다. ObjC에 걸리는 코드의 절반으로 MT로 많은 종류의 앱을 작성할 수 있습니다.
Rory Blyth

8
마지막으로 (계속할 수는 있지만, mt 포인트를 만들고 있다고 생각합니다.) MonoTouch의 "break"변경은 아마도 ObjC 앱을 손상시킬 가능성이 높습니다. 앱이 상점에 있으면 기본 iPhone 앱입니다 (필요한대로). Apple의 스택으로 구축 된 앱과 동일한 런타임은 궁극적으로 다르지 않습니다. 런타임 환경이 변경되어 MT 앱이 중단되면 ObjC로 빌드 된 앱도 마찬가지입니다. 그리고 MT 팀은 업데이트 및 버그 수정을 신속하게 발표하여이 문제를 해결했습니다. MT의 바인딩은 CT에 매우 가깝게 매핑되어 실제 문제가 발생할 가능성이 낮습니다. Aight - 난 : 지금 종료합니다
로리 블라이스에게

27

모노를 사용하는 것은 목발이 아닙니다. 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를 통해 완벽하게 지원되며 모든 수동 메모리 관리를 차단하고 동일한 작업을 수행하는 데 필요한 코드의 양을 줄이며 어셈블리를 재사용 할 수 있습니다. 다른 장치 및 플랫폼으로 이동할 수 있도록 옵션을 열어 둡니다.


19

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

타이핑이 적습니다.

단지 내 경험.


2
"매월 4 개 앱"-품질과 같이 수량이 더 중요한 경우. MT는 맥도날드와 같습니다. 그러나 XCode-Restaurant에서 더 나은 음식을 얻을 수 있습니다.
netshark1000 2016 년

2
Rdio와 iCircuit는 Steve Jobs가 시연 한 MT 앱입니다. C #과 MT는 obj-C가 강제로하는 배관 작업을 제거합니다.
Ian Vink

17

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

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


6
이것이 유일하게 개발할 iPhone 앱인 경우 연간 99 달러는 가치가 없습니다.
Dinah

동일한 C # 개발 도구를 사용하여 Mac 앱을 빌드 할 수 있습니다. 실제로 iPhone C #과 Mac C # 응용 프로그램간에 코드 공유를 할 수 있습니다. MonoTouch는 이제 자 마린라고
이안 Vink

9

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

한마디로 :

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

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

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

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


12
우선, C #은 "도메인 특정 언어" 가 아닙니다 . 상품 기술입니다. 이것이 MonoTouch의 가치 중 일부입니다. ObjC가 대부분의 개발자 (금융 및 대학 실험실 및 지하실 외부)가 OS X 또는 iPhone 개발에만 사용한다는 점에서 ObjC가 DSL이라고 주장 할 수 있습니다 (불공정하고 부정확하게). 그러나 그렇지 않습니다. C #과 마찬가지로 기본적으로 언어 자체가 아닌 프레임 워크에 집중할 수있는 다목적 언어입니다 (우리는 동의합니다). 그러나 ObjC 코드는 Apple 업데이트와 충돌 할 수 있습니다. 그것은 MT 특정 문제가 아닙니다.
Rory Blyth

3
이 추상화 계층이 있기 때문에 MT는 경우에 따라 당신을 구할 수도 있습니다 . 애플은 API를 수정? 음, ObjC 앱 동등한 MT 앱이 작동하지 않을 것입니다. MT 직원은 모노 터치 API가 비하인드 콜을 처리하는 방식을 수정하기 위해 스톱 갭 솔루션을 출시 할 수 있습니다. MT 코드는 변경할 필요가 없습니다. stopgap MT 릴리스에 대해 다시 빌드하면됩니다. 예 : 이것은이다 더러운 쉽게 문제를 야기하지만, 제대로 임시 변통 MT API를 완벽하게 변화를 처리하는 DEVS 시간을 줄 것이다 비하 수 수정 A에 대한 시간을 벌어 실제 수정.
Rory Blyth

4
또한 MT의 새로운 기능으로 필요한 경우 자체 바인딩을 만드는 것이 훨씬 쉬워졌습니다 (MT 1.2). 당신은 MT 작업에 전적으로 의존하지 않고 모든 작업 수행 할 수 있습니다. 바인딩을 만드는 데 간단한 방법이 있습니다. MT 프레임 워크를 사용하여 ObjC 런타임을 충분히 노출시켜 작업 방식에 얽매이지 않습니다. 내 방식이 더 좋은지 확인하기 위해 바인딩을 다시 구현했습니다. MT 프레임 워크를 무시하고 원하는 경우 "수동으로"메시지를 보내고받을 수 있으며 코드가 거의 들지 않습니다. 그들은 똑똑한 사람들입니다. 그들을 믿어 :)
Rory Blyth

2
slf는 Monotouch가 ObjC 라이브러리 + 선택적 .NET 라이브러리에 직접 바인딩되는 C # (GC 포함)이라는 사실을 알고 있지 않습니다. 따라서 여전히 애플에서 제공하는 API를 사용합니다. 그러나 깔끔한 구문과 가비지 수집.
basarat

4

다른 사람들이 이미 말한 것에 덧붙이려면 (잘!) 내 생각은 기본적으로 걱정해야 할 버그 수를 두 배로 늘리고 MonoTouch의 버그를 iPhone OS의 버그에 추가하는 것입니다. 새로운 OS 버전을 업데이트하는 것은 평소보다 훨씬 더 어려울 것입니다. ck.

MonoTouch에서 유일하게 볼 수있는 유일한 사례는 C # 프로그래머와 C # 코드가 많고 iPhone에서 활용 해야하는 조직 입니다. (3500 달러로 깜박 거리지 않는 가게 종류)

그러나 처음부터 시작하는 사람에게는 실제로 가치가 있거나 현명한 것으로 볼 수 없습니다.


-1 : "더 많은 버그"란 무엇을 의미합니까? Mono와 Objective-C간에 눈부신 임피던스 불일치가 있습니까?
Jim G.

4

세 단어 : Linq to SQL

예, $ 가치가 있습니다.


4
Objective-C의 키-값 바인딩 및 코어 데이터를 사용하면 Linq-to-SQL과 매우 유사한 것을 얻을 수 있습니다. 동일하지 않습니다. 아마도 강력하지는 않지만 같은 영역을 많이 덮고 있습니다. Core-Data는 현재 MonoTouch에서 지원되지 않습니다.
Philsquared

Linq to SQL은 iPhone 앱과 관련이 있습니까? SQLite와 함께 작동합니까?
bpapa

1
또한 사용자가 네트워크를 통해 데이터를 공유하기를 원합니다. SQL Lite로 무엇을하고 있습니까?
Bryan

"MonoTouch는 하이브리드 .NET 2.0 및 Silverlight 2 API 프로파일을 기반으로합니다"LINQ to object가 지원됩니까?
Chris S

2

허용되는 답변이 있어도 추가하고 싶은 것이 있습니다. 누가 Apple이 Mono Touch로 제작 된 징후가있는 앱만 거부하지 않습니까?


그들은 분명히해야하며 Flash 앱도 거부해야하지만 App Store 용어는 사용을 배제하지 않습니다.
NSResponder

3
@ bpapa-그것은 완전히 유효한 관심사이지만 1) 앱을 거부 할 이유가 없습니다 (사용자는 앱으로 작성된 것에 신경 쓰지 않습니다-앱 자체에 관심이 있습니다) 및 2) MonoTouch에는 많은 잠재력이 있습니다 엔터프라이즈 개발을 위해 , 그리고 엔터프라이즈 개발 계정이있는 한 Apple은 귀하가 앱을 배포하지 못하게 막을 수 없습니다. 또한 Apple은 Unity로 제작 된 게임을 허용합니다. 궁극적으로 MT는 규칙을 따릅니다. 애플의 프로세스는 때때로 무작위로 보이지만 ... MT는 규칙을 따릅니다.
Rory Blyth

1
@ bpapa-내가 오랫동안이 의견을 놓친 방법을 모르지만 1) 수많은 ObjC 앱이 문서화되지 않은 ( "비공개") API-FB를 사용하여 "파산"됩니다. FB는 여전히 살아 있으며 다운로드가 가능합니다. 2) Unity의 문제가 빠르게 해결되었고 Unity가 다시 시작되었습니다. -Apple이 당신이 자신의 것을 사용하기를 원하는 한, 나는 동의하지 않지만, 요구요구 는 크게 다릅니다. 엔터프라이즈 앱의 경우 : MT 엔터프라이즈 앱을 배포 할 수 있습니다. 그것들은 단지 네이티브 바이너리입니다. 나는 그 문제를 보지 못하고 왜 당신이 MT가 그렇게 대단한지 이해하지 못한다.
Rory Blyth

1
ObjC의 구문을 "증오"하는 것이 아니라 C #을 선호한다는 점을 덧붙여 야합니다. 또한 .Net 프레임 워크의 방법을 Cocoa에 선호합니다. 문자열 조작, 처리 XML, 아무것도 포함하는 날짜 등 - 나는 UI 작업을위한 MT CocoaTouch 바인딩을 사용 하겠지만, 대부분의 다른 작업을 위해, 닷넷 프레임 워크의 일부는 MT와 함께 제공 훨씬 쉽게 삶을 수있다. 계속해서 컴파일 할 수 있습니다 (예 : 컴파일 시 특정 버그를 찾는 것에 대한 선호 ). 나는 Apple의 스택을 중요하게 생각하지만 싫어하지는 않습니다. MT ObjC 등 을 좋아할 수 있습니다 .
Rory Blyth

1
Apple은 마음이 바뀌었고 이제는 모든 언어 / 프레임 워크에서 앱을 허용하고 스토어에서 앱을 수락하기위한 '객관적인'기준 목록을 설정합니다.
Monoman

2

나는 Objective-C에 시간을 투자 할 것입니다. 주로 이와 같은 사이트에서 얻을 수있는 모든 도움 때문입니다. Objective-C의 강점 중 하나는 C 및 C ++ 코드를 사용할 수 있다는 것 입니다. 잘 테스트 된 프로젝트가 많이 있습니다.

또 다른 것은 당신이 코드 (선택 언어)가 apple에 의해 지원된다는 것입니다. 예를 들어 iOS 5.x는 MonoTouch와 같은 타사 솔루션에 대한 지원을 제거합니까? 그러면 고객에게 무엇을 말 하시겠습니까?

Objective-C로 완전히 이동할 준비가되지 않은 경우 HTML5와 같은 플랫폼 독립적 인 솔루션을 사용하는 것이 더 낫습니까?


MonoTouch를 사용하면 Apple이 매우 강력하게 허용 / 지원을 중단하는 공급 업체에 갇혀 있다는 주장을 발견했습니다. 어쨌든 자신 만의 개발 플랫폼을 가지고있는 애플의 자비에 맞는 플랫폼에 투자하게 될 수도있다
.

2

나는 몇 달 동안 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를 고수하고 있습니다.


위의 답변에 대한 빠른 업데이트. 더 빠른 Mac으로 옮겼 기 때문에 빌드 시간이 훨씬 빠르다는 것을 알았지 만 여전히 XCode와 같은 순간은 아니지만 괜찮습니다.
danfordham

1

C #과 Objective-C에 대한 경험이있는 사람이라면 대부분의 사람들에게 Xamarin은 그만한 가치가 있다고 말합니다.

C #은 정말 좋은 디자인 언어이며 C # API도 잘 디자인되었습니다. 물론 Cocoa Touch API (UIKit 포함)의 디자인도 훌륭하지만 언어는 여러 가지면에서 향상 될 수 있습니다. C #으로 작성할 때 Objective-C에서 동일한 코드를 작성하는 것보다 생산성이 높아질 수 있습니다. 이것은 몇 가지 이유 때문이지만 몇 가지 이유는 다음과 같습니다.

  • C #에는 형식 유추가 있습니다. 과제의 왼쪽에있는 유형을 "알지 않아도"되므로 유형 유추를 통해 코드 작성이 더 빨라집니다. 또한 리팩토링이 더 쉽고 더 절약됩니다.

  • C #에는 generics 가있어 Objective-C 코드에 비해 오류가 줄어 듭니다 (Objective-C에는 몇 가지 해결 방법이 있지만 대부분의 상황에서 개발자는이를 피할 수 있습니다).

  • 최근 Xamarin은 Async / Await 지원을 추가하여 비동기 코드 작성이 매우 쉬워졌습니다.

  • iOS, Android 및 Windows Phone에서 코드 기반의 일부를 재사용 할 수 있습니다.

  • MonoTouch는 대부분 CocoaTouch API를 매우 간단하게 구현합니다. 예를 들어, CocoaTouch 사용 경험이 있다면 MonoTouch에서 컨트롤 클래스를 어디에서 찾을 수 있는지 알 수 있습니다 (MonoTouch.UIKit에는 UIButton, UIView, UINavigationController 등의 클래스가 포함됩니다. NSData 등 ...).

  • Xamarin은 PhoneGap 또는 Titanium과 같은 솔루션과 달리 사용자에게 기본 환경을 제공합니다.

이제 Objective-C는 C #보다 몇 가지 장점이 있지만 대부분의 경우 C #으로 앱을 작성하면 개발 시간이 단축되고 코드가 깨끗해지며 동일한 앱을 다른 플랫폼으로 이식하는 작업이 줄어 듭니다. 주목할만한 예외 중 하나는 OpenGL을 사용하는 고성능 게임 일 수 있습니다.


-35

MonoTouch 라이브러리의 비용은 전적으로 요점을 벗어납니다. iPhone 앱에 Mono를 사용해서는 안되는 이유는 그것이 목발이기 때문입니다. 기본 도구를 배우지 않아도 귀사의 제품을 다운로드 할 가치가 있다고 생각할 이유가 없습니다.

편집 : 2010 년 4 월 14 일 MonoTouch로 작성된 응용 프로그램은 iTunes Store를 사용할 수 없습니다. 이것은 그대로입니다. Apple은 Qt와 같은 크로스 플랫폼 툴킷 또는 Adobe 자체의 System 7 툴박스 부분 재 구현을 사용하여 Mac에서 많은 얕은 포트를 보았습니다.


14
Mac OS X의 시장 점유율은 매우 작으므로 iPhone은 X-Code 및 ObjC로 귀찮게하는 유일한 이유입니다. 둘 다 15 년 이상 전에 Project Builder 였을 때 플랫폼 복잡성 및 패키징을 교차했지만 솔직히-다양한 플랫폼을 사용하는 사람으로서-아마도 더 나은 도구와 언어를 사용하여 개발자가 공통점을 거의 사용하기를 원치 않습니다. 코드베이스 및 대체 개발 도구를 사용하십시오. 그들의 창조물이 파 아래에 있다는 것을 의미하지는 않습니다.
Iain Collins

37
모르겠어요 .. Objective-C와 CocoaTouch는 목발이라고 생각합니다. 어셈블리를 작성하지 않으면 그다지 신경 쓰지 않는 것처럼 느껴지고 앱을 다운로드하지 않을 것입니다 (사용자가 가장 먼저하는 일은 물론 도구가 무엇인지 확인하는 것이기 때문입니다) 다운로드하는 헛배 부름 시뮬레이션 앱을 만드는 데 사용됩니다).
Rory Blyth

3
앤드류, 당신은 당신이 말하는 곳을 모른다. Objective-C는 역류가 아닙니다. Mac, iPhone 및 iPad 용 기본 개발 환경의 중추입니다.
NSResponder

5
따라서 Apple이 프레임 워크에 내장 한 간단한 예를 하나 선택하고 C #에 비해 훨씬 복잡한 프레임 워크 부분을 편리하게 무시하면서 우수성을 주장합니까? 그것은 밀짚 꾼 논쟁이 아닌가?
Andrew Rollings

8
저는 MonoTouch로 전환하여 4.0에서도 47 개의 앱을 게시했습니다. 나는 풀 타임으로한다. 훌륭하고 빠르게 작동합니다. 나는 Objective C로 작성했지만 Linq로 C #을 작성하면 코드가 훨씬 적습니다.
이안 빈크
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.