Iphone 如何在Objective-C类/文件中组织代码?

Iphone 如何在Objective-C类/文件中组织代码?,iphone,objective-c,xcode,Iphone,Objective C,Xcode,对于iPhone开发来说是新的,而对于一般的软件开发来说不是新的。我希望我的Objective-C/iPhone源代码对其他阅读它的人来说“毫不奇怪” 想知道一个类中代码组织的公认实践是什么 例如,我有一个视图控制器,如下所示: @interface SomeViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate&g

对于iPhone开发来说是新的,而对于一般的软件开发来说不是新的。我希望我的Objective-C/iPhone源代码对其他阅读它的人来说“毫不奇怪”

想知道一个类中代码组织的公认实践是什么

例如,我有一个视图控制器,如下所示:

@interface SomeViewController : UIViewController 
    <UIPickerViewDelegate, 
    UIPickerViewDataSource, 
    UITextFieldDelegate> {
}
@接口SomeViewController:UIViewController
{
}
.m
文件中对这些协议的方法进行排序/放置的公认做法是什么?我知道这在技术上并不重要,但正如我所说的,我希望阅读我代码的人对我如何组织代码不感到惊讶


顺便说一句,如果在我的视图控制器上实现这些协议被认为是一种不好的做法,请在评论中让我知道,我会就此提出另一个问题(或者只是向我指出一个现有的问题)

虽然苹果的示例代码肯定不是完美的,但它至少是一个“不足为奇”的好模式你如何组织你的来源。请记住,所有其他iPhone程序员都已经看到了大量的苹果示例代码,因此他们已经熟悉了它的结构。

我认为最好的做法是:

1/将同一协议中的所有方法彼此靠近

2/将#pragma放在该块的顶部

#pragma mark UITextFieldDelegate
- (void)textFieldDidBeginEditing:(UITextField *)textField {
  // some code
}

- (void)textFieldDidEndEditing:(UITextField *)textField {
}

#pragma mark UIPickerViewDelegate

因此,当人们使用XCode查看方法列表时,他们将知道在特定协议中在何处查找方法:)

您可以更具体一些,至少对协议实现是这样吗?我似乎找不到让XCode“实现协议”的方法(比如JavaIDE),所以我不知道它会把有意义的方法存根放在哪里;那么它是否会像@synthesis,然后是我添加到类中的方法,然后是protocol1,然后是protocol2,然后是重写的方法,最后是dealoc?或者一个#pragma如何标记类的方法不属于协议的一部分?您可以将另一个#pragma标记实例的方法#pragma标记类的方法。通常,这个一般规则已经足够好了。具体细节取决于你的团队惯例。对于我们的团队,我们将@synthesis、init、dealoc放在一起,因为它们很重要,然后是视图,然后是控制器(对于UIViewController),然后我们可以按功能划分,但这取决于程序员的技能。也许你的团队在内存管理和弱视图控制器方面很强大,你可以考虑把它放在最上面,因为当有bug或改变时,它会频繁访问。