【发布时间】:2013-12-24 01:17:36
【问题描述】:
对于这样一个非常简单的对象:
@interface MyObject : NSObject
@property(strong) NSObject* thingAboutMyObject;
- (void) aThingToDo;
- (void) moreToDo;
- (void) yetAnotherAction;
@end
使用 MyObject 的人可以获得代码完成,其中包括来自 NSObject 的所有方法和属性。为什么会发生这种情况是有道理的,但在大多数情况下,我最关心的方法是在类本身中。我想知道在创建类时是否有办法向 xcode IDE 提示您在使用类的对象时要“突出显示”实际接口。
我见过一些类似乎通过在方法定义中复制类名来“处理”这个问题,以便它们在完成列表中排序在一起,例如:
- (void) myobjectAThingToDo;
- (void) myobjectMoreToDo;
- (void) myobjectYetAnotherAction;
但这似乎不是一个特别优雅的解决方案 ([myObject myobjectAThingToDo]),而且在涉及多态性的情况下它会严重崩溃。
这是一个“理想”解决方案的示例。如果有人没有提供合适的替代方案,我实际上可能会提出正式的功能请求。但就目前而言,它至少应该澄清我的要求。
如果有办法提示代码完成我的完成列表应该按类分组,那就太好了,例如:
我的对象
- [M] aThingToDo
- [M] 更多待办事项
- [M] thingAboutMyClass
- [M] yetAnotherAction
NSObject
- [M] 可访问性激活
- [M] 可访问性激活
- ...
据推测,更深的对象层次结构可以仅以相同的样式列出父类,按继承“接近度”排序。这样的列表仍然可以在您键入时轻松过滤并消除不匹配的类分组。
任何人都可以提出解决方案来帮助解决这个问题吗?我怀疑有什么可以完全满足我的要求,但是如果有好的方法可以将类自己的接口带到最前沿,或者至少得到NSObject 不碍事,我很想听。
【问题讨论】:
-
你的意思是说你想写你的自定义类方法,尽管使用可可类方法对吗??
-
不,这是专门关于代码完成的。我宁愿不要让我的代码完成列表中到处都是 NSObject 方法......希望代码完成能够优先考虑类的方法而不是继承的方法。在其他环境(C#、Java)中,这不是一个问题,因为基础对象没有大量方法,因此在使用完成时,对象的“预期”接口会立即跳出。这有意义吗?
-
为一个非常明确的问题点赞。我建议向Apple提出一个错误。这将是对 Xcode 的一个非常酷的补充。
-
... 为什么在我输入经常使用的 nil 时总是得到我从不使用的 Nil?我真的很喜欢能够按继承邻近度进行分组的想法。
-
这可能不是你想听到的,而是 AppCode。作为一个代码编辑器,它通常会让 Xcode 的生活日光变得尴尬。为了通过解决您的问题来说明,当前类的完成首先出现,然后是超类,依此类推。而这只是冰山一角。
标签: ios objective-c xcode xcode5 code-completion