Questions tagged «objective-c»

Objective-c是一种高度动态的基于消息的面向对象语言,是C的超集,它主要用于对Apple的Mac OS X和iOS平台进行编程。

4
为什么我们需要编写头文件?
在您提出尖刻的评论之前,我知道-这是一个nooby问题。这是我第一次使用基于C的语言。 我是一名本科生,正在学习有关移动开发的计算机科学课程的目标C。我知道,在学术环境中,由于您正在构建较小的项目,在较小的团队中工作等,因此不需要很多现实世界的考虑。 但是我们的教授要求-并且XCode支持-每个.m实现文件的.h头文件。对我来说,这似乎是忙碌的工作。我必须确保将每个方法签名和实例变量都复制到另一个文件中。如果更改一个文件,则必须确保它与另一个文件一致。好像只是一堆小麻烦。 但我知道,必须有一些现实世界中使用的头文件。一个很好的答案将解决这两个问题: 对于不适合实现文件的头文件有什么用?目的是什么? 为什么我们作为程序员必须手动编写头文件?看来它们很容易自动生成。 提前致谢!

3
是否正在逐步淘汰Objective-C ++?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 苹果是否正在逐步淘汰对Objective-C ++的支持?请注意以下几点: 在Objective-C语言手册中,曾经有一节介绍了Objective-c和c ++的混合。该部分现在丢失了。 链接在苹果开发者网站上的Objective-C ++文章似乎被打破,现在又重新定向,比如这一次,我就发现了这个问题计算器。 在apple dev网站上搜索c ++不会带来当前信息。 我应该担心使用c ++进行iOS开发吗?
10 c++  objective-c  apple 

3
我应该在哪里放置发出Http请求的方法以从iOS开发中的Web服务获取数据?
我的iOS应用程序中有一个Model Car,其中从网络服务中获取了诸如名称,年份,值等参数,以便用汽车数据填充列表。 我应将异步发送到服务器并返回汽车数组的方法放在哪里(该方法已将JSON转换为汽车数组)? 我当前的方法是Car类中的静态方法,该方法接收HttpClient(这样我就可以模拟客户端对它进行单元测试)并返回NSArray的汽车,这样好吗? 你们在这种情况下做了什么? 我很担心,因为我最近开始阅读干净的代码,该代码说一个类只能做一件事,而现在我拥有它的方式似乎可以做两件事(保存有关汽车的信息并获取汽车列表)。

2
ARC下的属性:始终还是仅公开?
在不到两年前,阅读了Robert McNally谦虚的文章“代码指令:Objective-C编码的最佳实践”之后,我采用了对我的Objective-C类的几乎每个数据成员使用属性的做法( (截至2012年5月的第三条诫命)。McNally列出了这样做的原因(我的重点): 属性强制执行访问限制(例如只读) 属性强制执行内存管理策略(强,弱) 属性提供了透明实现自定义setter和getter的机会。 具有自定义setter或getter的属性可用于强制执行线程安全策略。 使用单一方法访问实例变量可提高代码的可读性。 我将大多数属性都归为私有类别,因此编号1和4通常不是我遇到的问题。参数3和5更加“柔和”,并且使用正确的工具和其他一致性,它们可能会成为问题。最后,对我而言,这些论点中最具影响力的是数字2,内存管理。从那时起,我一直在这样做。 @property (nonatomic, strong) id object; // Properties became my friends. 在我的最后几个项目中,我转而使用ARC,这使我怀疑为几乎所有内容创建属性仍然是个好主意还是有点多余。ARC为我负责内存管理Objective-C对象的管理,strong如果您声明ivars ,则对于大多数成员而言,它可以正常工作。无论如何,在ARC之前和之后,您都必须手动管理C类型,并且这些weak属性大部分是公共属性。 当然,对于需要从类外部访问的任何内容,我仍然使用属性,但是这些属性仅是少数几个属性,而大多数数据成员在实现标头下被列为ivars。 @implementation GTWeekViewController { UILongPressGestureRecognizer *_pressRecognizer; GTPagingGestureRecognizer *_pagingRecognizer; UITapGestureRecognizer *_tapRecognizer; } 作为一个实验,我更加严格地执行了此操作,并且从所有属性移开属性都有一些不错的积极副作用。 数据成员代码要求(@property/ @synthesize)缩小为ivar声明。 我的大部分self.something参考资料都整理到_something。 可以轻松地区分哪些数据成员是私有的(无效)和哪些数据成员是公共的(属性)。 最后,“感觉”起来更像是苹果打算将其用于房地产的目的,但这是主观的猜测。 关于一个问题:我正在慢慢地向黑暗面发展,使用越来越少的属性来支持实现错误。您能否为我提供一些理由,说明为什么我应该坚持对所有内容都使用属性,或者证实我当前的思路,为什么我应该仅在需要的地方使用更多的ivars和更少的属性?双方最有说服力的答案都会得到我的认可。 编辑:麦克纳利(McNally)在推特上说:“我认为坚持使用房地产的主要理由是:一种做所有事情的方法,那就是做所有事情(包括KVC / KVO)。”
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.