你学习Objective-C/Cocoa的时候,遇到的最大问题是什么?

tinyfool 发布于 2013年08月14日
无人欣赏。

买不起Mac之类就不要提了……

共40条回复
yyppaag 回复于 2013年08月14日

缺一个大的学习提纲, 只能啃文档,比较慢。

tinyfool 回复于 2013年08月14日

文档里面的guide看过么?那就是学习提纲啊

yishenggudo 回复于 2013年08月14日

思维转不过来

nsm1168 回复于 2013年08月14日

提纲挈领很重要。无论对Objective-C语言还是Frame框架。

tinyfool 回复于 2013年08月14日

思维转不过来的时候,看过那些guide么?

Phil 回复于 2013年08月14日

国内交流的地方太少(我指的是Mac OSX那一块,iOS的倒是一大堆),有的时候可能问了问题得不到满意的解决方案。 还有就是有时候想搜一个东西,不知道该键入什么关键词~

tinyfool 回复于 2013年08月14日

Mac这边我们争取做最好的开发者园地吧

wuhang89 回复于 2013年08月14日

英文太烂了,这是硬伤。

tinyfool 回复于 2013年08月14日

英文烂,只能靠自己不断的看文档和查字典了

我现在基本上看美剧只看没有字幕的了,宁可看不懂也不让自己拄着拐棍,感觉最近英文又进步了

lockwar 回复于 2013年08月14日

对于我来说,最大的问题在于啃文档太慢,当然和自己的英文水平有关系,也和文档太多(当然是好事)有关系。

官方文档感觉就像一棵大树,一个树杈都引伸出几个树杈,如此反复。新手读来感觉就像听印度人说英语,觉得明白了一点,较真起来又感觉什么也没懂,但是高手可能会有“铁壶贯顶”的感觉,很打击新手的自信。再多说一句,就是官方给的示例,Xcode打开一看,我的妈,左边长长一溜,直接崩溃了。

看一些书和视频倒是比较直接明了,但是示例往往比较简单,照着做没问题,但想要自己弄点东西出来,要不根本无从下手,要么东查西搜很久才能搞定,也就是说没有做到很好的“授人以渔”。

当然,可能也是本人悟性太低。见笑!

nickel 回复于 2013年08月14日

如果不做界面部分只做中层业务逻辑和底层(通讯、存储等),对于一个C/C++经验者来说Obj-C实在很好学,即使不用ARC也轻易掌握,一个月足够熟悉了。

最大问题还是做界面,一开始做界面学习成本直线提高。很少文章会系统的讲解界面上手要逐步学习的东西,当然是个人都明白一开始就会用View/ViewController,如果是功能性主导的App,对界面要求不高的话,基本就足以胜任90%开发需求了。麻烦就在,如果需要一些稍微复杂的效果,或者需要根据数据动态生成界面内容(例如像Tiny的杂志界面),这样就复杂了,一大堆东西等着学,而且你还未必知道你该学什么,只能查到A看A,又通过A涉及到B、C,通过B、C可能又涉及DEFGHI。。。。。。越看得多你越发现TMD原来还有那么无穷无尽的资料要看。看官方文档是不明白的,你得看2-3个例子代码了解某个技术怎么用的(例如我搞明白Core Animation里的Transform就花了不少时间)。官方还有一大堆WWDC的video需要看,等你刚学到一些东西的时候,TMD新版本新SDK又来了。。。

虽然我很在意界面效果和体验,但具体做开发,我个人还是觉得做界面开发是件挺头疼的事,无论是iOS、Android还是Web(以前的MFC、QT、MiniGUI那些就更不用说了,和这些“现代”图形框架比起来就是北京周口店的猿人)。

ithinco 回复于 2013年08月14日

11楼。想着怎么做出自己想要的视觉效果头疼死。

terryso 回复于 2013年08月14日

iOS做界面已经很爽的了。。。比Web爽多了。。。起码没有了那些恶心的兼容性问题。。。

vikiliu0310 回复于 2013年08月14日

同顶11楼,但是接触到未知领域不清楚该学什么这个是普遍问题吧,我觉得以前很多教科书上的科学家都不会只有一个数学家或者一个物理学家这样的头衔,就是这么来的。而我个人遇到的最大问题是英语还有数学,英语是阅读官方文档以及墙外交流的必要条件,我目前还是靠硬着头皮看而已,数学我觉得应该也很重要,UI的动画,要效果好,特别~各种角度各种计算,我觉得也是必须的。虽然才投入工作不到2个月,但已经发现自己身上全是缺陷了,大家互勉之~加油

tinyfool 回复于 2013年08月14日

11楼,我们杂志那种界面,就不是学习Objective-C和Cocoa的范畴了,是一个专门的学科,叫做排版

nickel 回复于 2013年08月14日

@tinyfool 我说的是指怎么利用Obj-c和Cocoa来实现排版,例如碎月老湿根据你的需求去掌握CoreText来实现杂志的渲染引擎。如果不是因为需求要求到根据动态数据来实现不同布局/排版效果,而只是根据固定的UI设计来实现固定的界面布局的话,其实通常来说界面都相对比较好做。

具体的“排版”学科那就不是很了解了,能否推荐一些资料看看?

tinyfool 回复于 2013年08月14日

@nickel 我们的排版其实是基于Html和Css的,难度相当于写了一个浏览器。排版呢,还真是资料很难找。我们也是一点一点摸索出来的

:)

terryso 回复于 2013年08月14日

@tinyfool nimbus已经实现了一个CSS组件,可以基于CSS来排版,不过不知道跟你们的做法是不是一样。

tinyfool 回复于 2013年08月14日

楼上你是说这个?http://latest.docs.nimbuskit.info/NimbusCSS.html,我看了,它的目的是用CSS来给UIView之类的定位,有点意思。

我们比这个复杂,我们就是实现了一个浏览器的工作量,:)

我们做的比较像 https://github.com/johnezang/NSAttributedString-Additions-for-HTML,但是比它要复杂多了。

terryso 回复于 2013年08月14日

嗯。。。我说的是这个。 你们重新写一个解释器,是因为UIView无法满足需求么? 啥时候,把你们的那个实现讲讲,让大家学习一下。

tinyfool 回复于 2013年08月14日

我们写浏览器的部分倒是跟排版本身关系不大,排版本身还是靠CoreText这类东西

nickel 回复于 2013年08月14日

@tinyfool 重写一个浏览器,是指还是基于浏览器内核(例如webkit)来做二次处理,还是真的直接从HTML/CSS解释器开始写?如果是后者我觉得相当大的工作量啊!而且我总觉得HTML/CSS针对的需求太广泛了,处理逻辑也太复杂,所以造成任何的WebApp都比NativeApp有很大的性能弱势。

如果是自己直接从解释器开始写,是直接支持通用型HTML/CSS标准,还是只做HTML/CSS的子集支持,或者基于HTML/CSS以及杂志排版的一些特征需求(如支持视频、幻灯片效果、基于若干指定模式的图文混排等等)进行特殊封装支持(就是将HTML/CSS一些通用规范再封装定义为特殊的规范,解释器不需要直接解释通用HTML/CSS标准)?泰尼杂志是怎么做的呢?

问得那么细,主要是我现在的项目里其实有需要到一定的排版技术,但需求还远没有泰尼杂志排版那么复杂。我考虑到如果直接用Web模式WebView的效率相当得低,而且还不容易自己进行优化,所以我采取自定义一套简化版协议的方式,把一些排版需要的常见功能/控件(视频插入、幻灯片、按钮、面板、图集等等)直接在协议里针对性定义出封装的功能来,所以不需要非常复杂的解释器(但其实要满足一定的自定义性实现起来也不简单了,不过相对HTML/CSS来说还是简单很多),而且还可以针对每种功能/控件进行单独的逐步优化。缺点就是可支持的自定义性远比HTML/CSS低很多。我的目的主要还是不希望采用过于通用的标准,从而引入可控性和可优化空间很低的问题。

tinyfool 回复于 2013年08月14日

@nickel 我们写浏览器是完全自己写的,工作量非常大没错,当然我们是做排版的浏览器,所以,我们不支持JavaScript解析、不支持内容的边加载边渲染,这就降低了很多复杂度。

我们选择这套方案的原因是我们要去兼容iBooks Author的导出文件,那个文件就是HTML+CSS的结构,它支持的基本上是一个HTML子集(但是是相当全的一个子集),然后加上很多自定义的结构。

你的需求来看,你目前的实现方式是可以的。我们的需求是非常特殊的,不得已为之。

vikiliu0310 回复于 2013年08月14日

之前面试过一个公司,他们就希望我做这么个解析器出来,雷死我了,待遇跟工作量不成正比,而且是1个人做~

quake 回复于 2013年08月14日

OC语法落后,XCode太多反人类,绝对还停留在上个世纪

tinyfool 回复于 2013年08月14日

@quake 不要光喷,愿闻其详

quake 回复于 2013年08月14日

@tinyfool 随便举XCode几个例子:

使用落后的xcodeproj文件管理项目理念

文本编辑缺乏各种快捷键,比如快速移动光标到本行第一个非空字符

代码自动完成非常不智能,比如输入NSString *s = NSSt 不会自动在前后加上[

在我用过的IDE中,最难用的VS和Eclipse都比XCode要好上不少,很难相信这是一个21世纪的IDE。

tinyfool 回复于 2013年08月14日

@quake 老大,那你是不会用吧

“快速移动光标到本行第一个非空字符”这个热键我还真不知道

但是,自动完成很智能啊,你NSString *s = NSString alloc然后你打 ] ,Xcode会帮你加前面的 [ 啊。

quake 回复于 2013年08月14日

@tinyfool

你输入NSString *s = NSS 的时候是不会提示NSString并补全前后的[]

你必须输入NSString *s = [NSS 才会自动完成。

liues1992 回复于 2013年08月14日

有些原理性的东西很难找答案 比如说证书的问题,可能装几个证书发布什么的都没问题了,但是不明白怎么工作的,明白公钥私钥是什么,明白数字证书是什么,但是在iOS设备上是怎么验证的? 为什么加了个provision file就能真机测试了? 从App Store下载的又不需要provision file了, 这些问题如果明白的人解释可能不是很难,但是搜来搜去找不到答案。 又比如前段时间 objc.io 发布的关于Views的文章,讲原理性的东西,但是在官方文档里面是找不到的。 市面上的书基本上都是初阶,根本没什么用,很难找到稍微深入进阶的iOS开发书籍。

tinyfool 回复于 2013年08月14日

@quake 这就是一个习惯而已啊,这能谈什么优劣?

@liues1992 你看过UIView的guide么?

quake 回复于 2013年08月14日

@tinyfool 可以少打一个[ 啊,所以说它不智能。

这只是一个例子,就是这些各个小细节加起来,才让我觉得XCode蠢到家。

再比如说各种IDE的标配,用户定义macro或者code snippet template,XCode都没提供,每次输入NSLog或者NSString stringWithFormat这种常用代码的时候,我都觉得是在累傻小子。

tinyfool 回复于 2013年08月14日

@quake 我还是觉得是因为你不会用啊,习惯了,很简单啊

liues1992 回复于 2013年08月14日

@tinyfool 当然看过的,但也仅仅讲怎么用而已,但是很多东西View和layer究竟什么关系,coregraphics和coreanimation什么关系,跟GPU又是什么关系CGLayer用来干嘛,这些东西可能在文档里的只言片语找到,但是很难有个全面的理解。

tinyfool 回复于 2013年08月14日

@liues1992 这倒是个问题,确实咩有太多的解释,WWDC的视频会讲一些

liues1992 回复于 2013年08月14日

@tinyfool 对的,wwdc是个非常好的资源,里面的视频会讲原理性的东西, 常常有醍醐灌顶的感觉。 如果对每个知识点都有objc.io里面那样的好文章,至少学习过程中会少很多困惑。

terryso 回复于 2013年08月15日

@quake 想请教一下,你觉得哪个IDE才是好用的IDE?

superleexpe 回复于 2013年08月15日

想再往其他方向拓展好吃力,比如IOS下不少做音频视频或者通讯什么的,很多编码解码,有的还更贴底层,C、C++没有太多经验~ 老看这些控件UI层什么的意思不大~

quake 回复于 2013年08月16日

@terryso idea公司出的IDE是最好用的。

terryso 回复于 2013年08月16日

@quake 觉得xCode烂,用AppCode就OK鸟。。。我也是一直用AppCode

本帖有40个回复,因为您没有注册或者登录本站,所以,只能看到本帖的10条回复。如果想看到全部回复,请注册或者登录本站。

登录 或者 注册
[顶 楼]
|
|
[底 楼]
|
|
[首 页]