我刚刚开始编写Objective-C编程,并且具有Java背景,想知道编写Objective-C程序的人如何处理私有方法.
我理解可能存在一些惯例和习惯,并将此问题视为人们在Objective-C中使用私有方法的最佳技术的聚合器.
请在发布时为您的方法添加一个参数.它为什么好?它有哪些缺点(你知道)以及你如何处理它们?
至于到目前为止我的发现.
可以使用MyClass.m文件中定义的类别 [例如MyClass(Private)]来对私有方法进行分组.
这种方法有两个问题:
第一个问题可以解决空类 [例如MyClass()].
第二个困扰我很多.我希望在文件末尾附近实现(和定义)私有方法; 我不知道这是否可能.
在构造函数,赋值和方法调用方面,PyCharm IDE非常擅长分析我的源代码并确定每个变量应该是什么类型.我喜欢它,因为它给了我很好的代码完成和参数信息,如果我尝试访问不存在的属性,它会给我警告.
但是当谈到参数时,它什么都不知道.代码完成下拉列表无法显示任何内容,因为它们不知道参数的类型.代码分析无法查找警告.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
peasant = Person("Dennis", 37)
# PyCharm knows that the "peasant" variable is of type Person
peasant.dig_filth() # shows warning -- Person doesn't have a dig_filth method
class King:
def repress(self, peasant):
# PyCharm has no idea what type the "peasant" parameter should be
peasant.knock_over() # no warning even though knock_over doesn't exist
King().repress(peasant)
# Even if I call the method once with a Person instance, …Run Code Online (Sandbox Code Playgroud) 我正在研究使用clang的代码完成机制时潜在的代码完成速度.下面描述的流程是我在rtags中发现的Anders Bakken.
翻译单元由守护程序监视文件进行解析以进行更改.这是通过被调用的clang_parseTranslationUnit和相关的函数(reparse*,dispose*)来完成的.当用户在源文件中的给定行和列请求完成时,守护程序将缓存的转换单元传递给源文件的最后保存版本和当前源文件clang_codeCompleteAt.(Clang CodeComplete docs).
传递给clang_parseTranslationUnit(来自CompletionThread :: process,第271行)的标志是CXTranslationUnit_PrecompiledPreamble|CXTranslationUnit_CacheCompletionResults|CXTranslationUnit_SkipFunctionBodes.传递给clang_codeCompleteAt(来自CompletionThread :: process,第305行)的标志是CXCodeComplete_IncludeMacros|CXCodeComplete_IncludeCodePatterns.
调用clang_codeCompleteAt非常慢 - 即使在完成位置是合法成员访问代码的情况下,也需要大约3-5秒来获得完成,这是文档中提到的预期用例的子集clang_codeCompleteAt.IDE代码完成标准似乎太慢了.有没有办法加速这个?
许多编辑器和IDE都有代码完成.其中一些非常"聪明",其他人则不是.我对更智能的类型感兴趣.例如,我已经看到IDE只提供一个函数,如果它是a)在当前范围内可用b)它的返回值是有效的.(例如在"5 + foo [tab]"之后它只提供返回可以添加到正确类型的整数或变量名称的东西的函数.)我还看到他们将更常用或更长的选项放在前面的清单.
我意识到你需要解析代码.但通常在编辑当前代码时无效,其中存在语法错误.当它不完整并包含错误时,你如何解析?
还有时间限制.如果需要几秒钟来完成列表,则完成是无用的.有时,完成算法处理数千个类.
有什么好的算法和数据结构?
我用的是PhpStorm.我想制作代码片段,然后为它们分配快捷方式.我可以在NetBeans中完成它,但在PhpStorm中我不知道如何制作它们.
例如,要添加console.log();NetBeans,我只输入con + space.con是我定义的快捷方式.
大多数情况下,Vim中的自动完成功能对我很有效,但有时它似乎是扫描当前文件引用的文件,然后它变得非常缓慢,有时需要几秒钟才能将焦点释放给我.
有时Vim告诉我其他时间只是"扫描",它说的是"扫描标签"
我只在Ruby文件中发生这种情况,并且主要发生在文件中存在require时.
我的猜测是,这是某种功能,可以检查自动完成选项的相关文件,但我真的不需要,并希望更快的自动完成.
我刚刚将Xcode更新到6.3版.我正在使用一些导入的Objective C代码在Swift中开发一个项目.我也使用Cocoapods.
我对Xcode 6.3 beta也有同样的问题.我已经看过并尝试过所有其他StackOverflow的答案而没有运气.
到目前为止,我试过:
删除~/Library/Developer/Xcode/DerivedData并~/Library/Caches/com.apple.dt.Xcode重启Xcode和/或Mac.
卸载Spotify.
不使用"+"连接运算符.
将部署目标设置为8.1.
我应该提一下,Objective C代码快速自动填充,并且在索引Swift代码之前也是如此.Esc弹出建议按钮使用相同的延迟.
每当我输入一个(,[,或{,Notepad ++,用相应的右括号完成它.我发现这个'功能'很烦人,想要禁用它.它似乎没有列在首选项对话框和搜索在线文档没有产生任何有用的结果.这里有人知道隐藏的选项在哪里吗?我目前正在使用Notepad ++ 5.0.3.
我一直在使用Xcode 4.3.1,因为它现在出来了,我从那时起就开始从事许多不同的项目.在我正在开发的这个新项目之前,一切都运行良好.
代码完成/代码感觉永远不会发现任何东西,或者当我'命令+点击'变量或类通常它会跳转到那个但现在我只是得到'未找到符号'.
如果我打开一个旧的项目而这个坏的项目是打开的,那么旧的项目仍然可以用于代码感,而新的项目则不然.
我的合作伙伴正在开发同一个项目,我们都从我们的存储库中获取文件,并且代码检测在他的机器上为这个项目工作......不是我的.
所以我有点困惑,如何解决这个问题......有什么想法?!
谢谢!
我在解决自动填充本地变量时遇到问题.这是一个非常基本的功能,我相信它应该支持.当我开始写一个已经声明的变量名,并按TAB(这是默认的快捷方式)时,我什么也得不到.这是一个错误吗?
code-completion ×10
autocomplete ×2
algorithm ×1
c++ ×1
clang ×1
cocoa ×1
intellisense ×1
libclang ×1
llvm ×1
notepad++ ×1
objective-c ×1
phpstorm ×1
pycharm ×1
python ×1
spyder ×1
swift ×1
type-hinting ×1
vim ×1
webstorm ×1
xcode ×1
xcode4 ×1
xcode6.3 ×1