- 浏览: 709962 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
javenwong:
你好,我现在需要给一个Composite做圆角处理,不知道怎么 ...
SWT圆角窗口绘制 -
whao189:
回家了详细看看
Storyboard 解析 -
zhaoyubetter:
确实够麻烦
IOS 开发环境,证书和授权文件是什么? -
datawarehouse:
一直对这两个认为是一样的,现在学习了。
Oracle DB中的Schema -
yulanfeiyang:
顶,mark
下载音频,在IOS设备上播放
参考资料:
• Apple: Coding Guidelines for Cocoa
• Google: Objective-C Style Guide
• Three20: Source code style guildelines
正文:
• 格式化代码
◦ 指针“*”号的位置
▪ 如:NSString *varName;
◦ 空格 VS tabs
▪ 只允许使用空格,将编辑器设置为1个TAB = 2个字符缩进
◦ 每行的长度
▪ 每行最多不得超过100个字符
▪ 以15寸Macbook Pro的大小,每行100个字符时能最大化地同时容下编辑器和iPhone模拟器
▪ Google的80字符的标准有点少,这导致过于频繁的换行(Objectve-C的代码一般都很长)
▪ 通过 “Xcode => Preferences => TextEditing => 勾选Show Page Guide / 输入
100 => OK” 来设置提醒◦ 方法的声明和定义
▪ 在 - OR + 和返回值之间留1个空格,方法名和第一个参数间不留空格。如:- (void)doSomethingWithString:(NSString *)theString {
...}
▪ 当参数过长时,每个参数占用一行,以冒号对齐。如:- (void)doSomethingWith:(GTMFoo *)theFoo
rect:(NSRect)theRect
interval:(float)theInterval {
...}
▪ 如果方法名比参数名短,每个参数占用一行,至少缩进4个字符,且为垂直对齐(而非使用冒号对齐)。如:
- (void)short:(GTMFoo *)theFoo
longKeyword:(NSRect)theRect
evenLongerKeyword:(float)theInterval {
...
}
◦ 方法的调用
▪ 调用方法沿用声明方法的习惯。例外:如果给定源文件已经遵从某种习惯,继续遵从那种习惯。
▪ 所有参数应在同一行中,或者每个参数占用一行且使用冒号对齐。如:
[myObject doFooWith:arg1 name:arg2 error:arg3];
或
[myObject doFooWith:arg1
name:arg2
error:arg3];
▪ 和方法的声明一样,如果无法使用冒号对齐时,每个参数一行、缩进4个字符、垂直对其(而非使用冒号对齐)。如:
[myObj short:arg1
longKeyword:arg2
evenLongerKeyword:arg3];
◦ @public 和 @private
▪ @public 和 @private使用单独一行,且缩进1个字符
◦ Protocals
▪ 类型标示符、代理名称、尖括号间不留空格。
▪ 该规则同样适用于:类声明、实例变量和方法声明。如:
@interface MyProtocoledClass : NSObject<NSWindowDelegate> {
@private
id<MyFancyDelegate> _delegate;
}
- (void)setDelegate:(id<MyFancyDelegate>)aDelegate;
@end
▪ 如果类声明中包含多个protocal,每个protocal占用一行,缩进2个字符。如:@interface CustomViewController : ViewController<
AbcDelegate,
DefDelegate>{
...}
•命名
◦ 类名
▪ 类名(及其category name 和 protocal name)的首字母大写,写使用首字母大写的形式分割单词
▪ 在面向特定应用的代码中,类名应尽量避免使用前缀,每个类都使用相同的前缀影响可读性。
▪ 在面向多应用的代码中,推荐使用前缀。如:GTMSendMessage◦ Category Name
▪ 待完善◦ 方法名
▪ 方法名的首字母小写,且使用首字母大写的形式分割单词。方法的参数使用相同的规则。
▪ 方法名+参数应尽量读起来像一句话(如:)。在这里查看苹果对方法命名的规范。
▪ getter的方法名和变量名应相同。不允许使用“get”前缀。如:
- (id) getDelegate; // 禁止
- (id)delegate; // 对头
▪ 本规则仅针对Objective-C代码,C++代码使用C++的习惯
◦ 变量名
▪ 变量名应使用容易意会的应用全称,且首字母小写,且使用首字母大写的形式分割单词
▪ 成员变量使用“_”作为前缀(如:“NSString *_varName;”。虽然这与苹果的标准(使
用“_”作为后缀)相冲突,但基于以下原因,仍使用“_”作为前缀。
▪ 使用“_”作为前缀,更容易在有代码自动补全功能的IDE中区分“属性
(self.userInfo)”和“成员变量(_userInfo)”
▪ 常量(#define, enums, const等)使用小写“k”作为前缀,首字母大写来分割单词。如:
kInvalidHandle
•注释
◦ 待完善
• Cocoa 和 Objective-C特有的规则
成员变量使用@private。如:
@interface MyClass : NSObject {
@private
id _myInstanceVariable;
}
// public accessors, setter takes ownership
- (id)myInstanceVariable;
- (void)setMyInstanceVariable:(id)theVar;
@end
Indentify Designated Initializer▪ 待完善
Override Desingated Initializer
▪ 待完善◦ 初始化
▪ 在初始化方法中,不要将变量初始化为“0”或“nil”,那是多余的
▪ 内存中所有的新创建的对象(isa除外)都是0,所以不需要重复初始化为“0”或“nil”◦ 避免显式的调用+new方法
▪ 禁止直接调用NSObject的类方法+new,也不要在子类中重载它。使用alloc和init方法◦ 保持公共API的简洁性
▪ 待完善
◦ #import VS #include
▪ 使用#import引入Ojbective-C和Ojbective-C++头文件,使用#include引入C和C++头文件
◦ import根框架(root frameworks),而非各单个文件
▪ 虽然有时我们仅需要框架(如Cocoa 或 Foundation)的某几个头文件,但引入根文件编译
器会运行的更快。因为根框架(root frameworks)一般会预编译,所以加载会更快。再次强调:使用 #import 而非 #include 来引入Objective-C框架。如:
#import <Foundation/NSArray.h> // 禁止
#import <Foundation/NSString.h>
...
#import <Foundation/Foundation.h> // 对头◦ 创建对象时尽量使用autorelease
▪ 创建临时对象时,尽量同时在同一行中 autorelease 掉,而非使用单独的 release 语句
▪ 虽然这样会稍微有点慢,但这样可以阻止因为提前 return 或其他意外情况导致的内存泄露。
通盘来看这是值得的。如:
// 避免这样使用(除非有性能的考虑)
MyController* controller = [[MyController alloc] init];
// ... 这里的代码可能会提前return ...
[controller release];
// 这样更好
MyController* controller = [[[MyController alloc] init] autorelease];
◦ 先autorelease,再retain
▪ 在为对象赋值时,遵从“先autorelease,再retain”
▪ 在将一个新创建的对象赋给变量时,要先将旧对象release掉,否则会内存泄露。市面上有很
多方法来handle这种情况,这里选择“先autorelease,再retain”的方法,这种方法不易引入error。注意:在循环中这种方法会“填满”autorelease pool,稍稍影响效率,但是Google和我( )认为这个代价是可以接受的。如:
- (void)setFoo:(GMFoo *)aFoo {
[foo_ autorelease]; // 如果foo_和aFoo是同一个对象(foo_ == aFoo),dealloc不会被调用
foo_ = [aFoo retain];
}
◦ dealloc的顺序要与变量声明的顺序相同
▪ 这有利于review代码
▪ 如果dealloc中调用其他方法来release变量,将被release的变量以注释的形式标注清楚
◦ NSString的属性的setter使用“copy”
▪ 禁止使用retain,以防止意外的修改了NSString变量的值。如:
- (void)setFoo:(NSString *)aFoo {
[foo_ autorelease];
foo_ = [aFoo copy];
}
或
@property (nonatomic, copy) NSString *aString;
◦ 避免抛出异常(Throwing Exceptions)▪ 待完善
◦ 对 nil 的检查
▪ 仅在有业务逻辑需求时检查nil,而非为了防止崩溃
▪ 向 nil 发送消息不会导致系统崩溃,Objective-C运行时负责处理。◦ BOOL陷阱
▪ 将int值转换为BOOL时应特别小心。避免直接和YES比较
▪ Objective-C中,BOOL被定义为unsigned char,这意味着除了 YES(1) 和NO(0)外它
还可以是其他值。禁止将int直接转换(cast or convert)为BOOL。
▪ 常见的错误包括:将数组的大小、指针值或位运算符的结果转换(cast or convert)为
BOOL,因为该BOOL值的结果取决于整型值的最后一位
▪ 将整型值转换为BOOL的方法:使用三元运算符返回YES / NO,或使用位运算符(&&,||,!)
▪ BOOL、_Bool和bool之间的转换是安全的,但是BOOL和Boolean间的转换不是安全的,所以
将Boolean看成整型值。
▪ 在Objective-C中,只允许使用BOOL
▪ 如:
// 禁止
- (BOOL)isBold {
return [self fontTraits] & NSFontBoldTrait;
}
- (BOOL)isValid {
return [self stringValue];
}
// 对头
- (BOOL)isBold {
return ([self fontTraits] & NSFontBoldTrait) ? YES : NO;
}
- (BOOL)isValid {
return [self stringValue] != nil;
}
- (BOOL)isEnabled {
return [self isValid] && [self isBold];
}
▪ 禁止直接将BOOL和YES/NO比较,如:// 禁止
BOOL great = [foo isGreat];
if (great == YES)
...
// 对头
BOOL great = [foo isGreat];if (great)
...
◦ 属性
▪ 命名:与去掉“_”前缀的成员变量相同,使用@synthesize将二者联系起来。如:
// abcd.h
@interface MyClass : NSObject {
@private
NSString *_name;
}
@property (copy, nonatomic) NSString *name;
@end
// abcd.m
@implementation MyClass
@synthesize name = _name;
@end
▪ 位置:属性的声明紧随成员变量块之后,中间空一行,无缩进。如上例所示▪ 严把权限:对不需要外部修改的属性使用readonly
▪ NSString使用copy而非retain
▪ CFType使用@dynamic, 禁止使用@synthesize
▪ 除非必须,使用nonatomic• Cocoa Pattern
◦ Delegate Pattern(委托)
▪ delegate对象使用assign,禁止使用retain。因为retain会导致循环索引导致内存泄露,
并且此类型的内存泄露无法被Instrument发现,极难调试
▪ 成员变量命名为_delegate,属性名为delegate
◦ Model/View/Controller▪ Model和View分离
▪ 不多解释
▪ Controller独立于View和Controller
▪ 不要在与view相关的类中添加过多的业务逻辑代码,这让代码的可重用性很差
▪ Controller负责业务逻辑代码,且Controller的代码与view尽量无关
▪ 使用@protocal 定义回调APIs,如果并非所有方法都是必须的,使用@optional标示
•其他
◦ init方法和dealloc方法是是最常用的方法,所以将他们放在类实现的开始位置◦ 使用空格将相同的变量、属性对齐,使用换行分组
• Apple: Coding Guidelines for Cocoa
• Google: Objective-C Style Guide
• Three20: Source code style guildelines
正文:
• 格式化代码
◦ 指针“*”号的位置
▪ 如:NSString *varName;
◦ 空格 VS tabs
▪ 只允许使用空格,将编辑器设置为1个TAB = 2个字符缩进
◦ 每行的长度
▪ 每行最多不得超过100个字符
▪ 以15寸Macbook Pro的大小,每行100个字符时能最大化地同时容下编辑器和iPhone模拟器
▪ Google的80字符的标准有点少,这导致过于频繁的换行(Objectve-C的代码一般都很长)
▪ 通过 “Xcode => Preferences => TextEditing => 勾选Show Page Guide / 输入
100 => OK” 来设置提醒◦ 方法的声明和定义
▪ 在 - OR + 和返回值之间留1个空格,方法名和第一个参数间不留空格。如:- (void)doSomethingWithString:(NSString *)theString {
...}
▪ 当参数过长时,每个参数占用一行,以冒号对齐。如:- (void)doSomethingWith:(GTMFoo *)theFoo
rect:(NSRect)theRect
interval:(float)theInterval {
...}
▪ 如果方法名比参数名短,每个参数占用一行,至少缩进4个字符,且为垂直对齐(而非使用冒号对齐)。如:
- (void)short:(GTMFoo *)theFoo
longKeyword:(NSRect)theRect
evenLongerKeyword:(float)theInterval {
...
}
◦ 方法的调用
▪ 调用方法沿用声明方法的习惯。例外:如果给定源文件已经遵从某种习惯,继续遵从那种习惯。
▪ 所有参数应在同一行中,或者每个参数占用一行且使用冒号对齐。如:
[myObject doFooWith:arg1 name:arg2 error:arg3];
或
[myObject doFooWith:arg1
name:arg2
error:arg3];
▪ 和方法的声明一样,如果无法使用冒号对齐时,每个参数一行、缩进4个字符、垂直对其(而非使用冒号对齐)。如:
[myObj short:arg1
longKeyword:arg2
evenLongerKeyword:arg3];
◦ @public 和 @private
▪ @public 和 @private使用单独一行,且缩进1个字符
◦ Protocals
▪ 类型标示符、代理名称、尖括号间不留空格。
▪ 该规则同样适用于:类声明、实例变量和方法声明。如:
@interface MyProtocoledClass : NSObject<NSWindowDelegate> {
@private
id<MyFancyDelegate> _delegate;
}
- (void)setDelegate:(id<MyFancyDelegate>)aDelegate;
@end
▪ 如果类声明中包含多个protocal,每个protocal占用一行,缩进2个字符。如:@interface CustomViewController : ViewController<
AbcDelegate,
DefDelegate>{
...}
•命名
◦ 类名
▪ 类名(及其category name 和 protocal name)的首字母大写,写使用首字母大写的形式分割单词
▪ 在面向特定应用的代码中,类名应尽量避免使用前缀,每个类都使用相同的前缀影响可读性。
▪ 在面向多应用的代码中,推荐使用前缀。如:GTMSendMessage◦ Category Name
▪ 待完善◦ 方法名
▪ 方法名的首字母小写,且使用首字母大写的形式分割单词。方法的参数使用相同的规则。
▪ 方法名+参数应尽量读起来像一句话(如:)。在这里查看苹果对方法命名的规范。
▪ getter的方法名和变量名应相同。不允许使用“get”前缀。如:
- (id) getDelegate; // 禁止
- (id)delegate; // 对头
▪ 本规则仅针对Objective-C代码,C++代码使用C++的习惯
◦ 变量名
▪ 变量名应使用容易意会的应用全称,且首字母小写,且使用首字母大写的形式分割单词
▪ 成员变量使用“_”作为前缀(如:“NSString *_varName;”。虽然这与苹果的标准(使
用“_”作为后缀)相冲突,但基于以下原因,仍使用“_”作为前缀。
▪ 使用“_”作为前缀,更容易在有代码自动补全功能的IDE中区分“属性
(self.userInfo)”和“成员变量(_userInfo)”
▪ 常量(#define, enums, const等)使用小写“k”作为前缀,首字母大写来分割单词。如:
kInvalidHandle
•注释
◦ 待完善
• Cocoa 和 Objective-C特有的规则
成员变量使用@private。如:
@interface MyClass : NSObject {
@private
id _myInstanceVariable;
}
// public accessors, setter takes ownership
- (id)myInstanceVariable;
- (void)setMyInstanceVariable:(id)theVar;
@end
Indentify Designated Initializer▪ 待完善
Override Desingated Initializer
▪ 待完善◦ 初始化
▪ 在初始化方法中,不要将变量初始化为“0”或“nil”,那是多余的
▪ 内存中所有的新创建的对象(isa除外)都是0,所以不需要重复初始化为“0”或“nil”◦ 避免显式的调用+new方法
▪ 禁止直接调用NSObject的类方法+new,也不要在子类中重载它。使用alloc和init方法◦ 保持公共API的简洁性
▪ 待完善
◦ #import VS #include
▪ 使用#import引入Ojbective-C和Ojbective-C++头文件,使用#include引入C和C++头文件
◦ import根框架(root frameworks),而非各单个文件
▪ 虽然有时我们仅需要框架(如Cocoa 或 Foundation)的某几个头文件,但引入根文件编译
器会运行的更快。因为根框架(root frameworks)一般会预编译,所以加载会更快。再次强调:使用 #import 而非 #include 来引入Objective-C框架。如:
#import <Foundation/NSArray.h> // 禁止
#import <Foundation/NSString.h>
...
#import <Foundation/Foundation.h> // 对头◦ 创建对象时尽量使用autorelease
▪ 创建临时对象时,尽量同时在同一行中 autorelease 掉,而非使用单独的 release 语句
▪ 虽然这样会稍微有点慢,但这样可以阻止因为提前 return 或其他意外情况导致的内存泄露。
通盘来看这是值得的。如:
// 避免这样使用(除非有性能的考虑)
MyController* controller = [[MyController alloc] init];
// ... 这里的代码可能会提前return ...
[controller release];
// 这样更好
MyController* controller = [[[MyController alloc] init] autorelease];
◦ 先autorelease,再retain
▪ 在为对象赋值时,遵从“先autorelease,再retain”
▪ 在将一个新创建的对象赋给变量时,要先将旧对象release掉,否则会内存泄露。市面上有很
多方法来handle这种情况,这里选择“先autorelease,再retain”的方法,这种方法不易引入error。注意:在循环中这种方法会“填满”autorelease pool,稍稍影响效率,但是Google和我( )认为这个代价是可以接受的。如:
- (void)setFoo:(GMFoo *)aFoo {
[foo_ autorelease]; // 如果foo_和aFoo是同一个对象(foo_ == aFoo),dealloc不会被调用
foo_ = [aFoo retain];
}
◦ dealloc的顺序要与变量声明的顺序相同
▪ 这有利于review代码
▪ 如果dealloc中调用其他方法来release变量,将被release的变量以注释的形式标注清楚
◦ NSString的属性的setter使用“copy”
▪ 禁止使用retain,以防止意外的修改了NSString变量的值。如:
- (void)setFoo:(NSString *)aFoo {
[foo_ autorelease];
foo_ = [aFoo copy];
}
或
@property (nonatomic, copy) NSString *aString;
◦ 避免抛出异常(Throwing Exceptions)▪ 待完善
◦ 对 nil 的检查
▪ 仅在有业务逻辑需求时检查nil,而非为了防止崩溃
▪ 向 nil 发送消息不会导致系统崩溃,Objective-C运行时负责处理。◦ BOOL陷阱
▪ 将int值转换为BOOL时应特别小心。避免直接和YES比较
▪ Objective-C中,BOOL被定义为unsigned char,这意味着除了 YES(1) 和NO(0)外它
还可以是其他值。禁止将int直接转换(cast or convert)为BOOL。
▪ 常见的错误包括:将数组的大小、指针值或位运算符的结果转换(cast or convert)为
BOOL,因为该BOOL值的结果取决于整型值的最后一位
▪ 将整型值转换为BOOL的方法:使用三元运算符返回YES / NO,或使用位运算符(&&,||,!)
▪ BOOL、_Bool和bool之间的转换是安全的,但是BOOL和Boolean间的转换不是安全的,所以
将Boolean看成整型值。
▪ 在Objective-C中,只允许使用BOOL
▪ 如:
// 禁止
- (BOOL)isBold {
return [self fontTraits] & NSFontBoldTrait;
}
- (BOOL)isValid {
return [self stringValue];
}
// 对头
- (BOOL)isBold {
return ([self fontTraits] & NSFontBoldTrait) ? YES : NO;
}
- (BOOL)isValid {
return [self stringValue] != nil;
}
- (BOOL)isEnabled {
return [self isValid] && [self isBold];
}
▪ 禁止直接将BOOL和YES/NO比较,如:// 禁止
BOOL great = [foo isGreat];
if (great == YES)
...
// 对头
BOOL great = [foo isGreat];if (great)
...
◦ 属性
▪ 命名:与去掉“_”前缀的成员变量相同,使用@synthesize将二者联系起来。如:
// abcd.h
@interface MyClass : NSObject {
@private
NSString *_name;
}
@property (copy, nonatomic) NSString *name;
@end
// abcd.m
@implementation MyClass
@synthesize name = _name;
@end
▪ 位置:属性的声明紧随成员变量块之后,中间空一行,无缩进。如上例所示▪ 严把权限:对不需要外部修改的属性使用readonly
▪ NSString使用copy而非retain
▪ CFType使用@dynamic, 禁止使用@synthesize
▪ 除非必须,使用nonatomic• Cocoa Pattern
◦ Delegate Pattern(委托)
▪ delegate对象使用assign,禁止使用retain。因为retain会导致循环索引导致内存泄露,
并且此类型的内存泄露无法被Instrument发现,极难调试
▪ 成员变量命名为_delegate,属性名为delegate
◦ Model/View/Controller▪ Model和View分离
▪ 不多解释
▪ Controller独立于View和Controller
▪ 不要在与view相关的类中添加过多的业务逻辑代码,这让代码的可重用性很差
▪ Controller负责业务逻辑代码,且Controller的代码与view尽量无关
▪ 使用@protocal 定义回调APIs,如果并非所有方法都是必须的,使用@optional标示
•其他
◦ init方法和dealloc方法是是最常用的方法,所以将他们放在类实现的开始位置◦ 使用空格将相同的变量、属性对齐,使用换行分组
发表评论
-
iphone编程之UILabel 用法详解
2012-12-18 14:38 1400这段代码动态的创建了一个UILabel,并且把相关常用的属 ... -
IOS用正则验证手机号
2012-12-14 12:01 17202- (BOOL)validateMobile:(NSStr ... -
UITableView技巧之去除UITableViewCell边框
2012-12-14 10:42 3600有时候想在UITableViewCell中加内容,但又不想要c ... -
MAC MySQL Workbench执行批量更新和删除的时候错误解决
2012-10-25 11:21 3998处理MySQL更新表时ErrorCode:1175.You a ... -
autorelease对象具体什么时候释放?
2012-09-19 15:21 1038在项目中,会有一个默认的Autorelease pool,程序 ... -
Objective-C内存管理教程和原理剖析
2012-09-10 14:44 896此文涉及的内存管理是针对于继承于NSObject的Clas ... -
IOS开发内存释放小结
2012-09-03 17:34 5362内存释放是iphone开发过程中比较重的地方,所以在开辟内存后 ... -
为什么Android没有iOS那么顺滑
2012-08-29 14:38 901虽然很多Android手机的配 ... -
UITextView关闭键盘
2012-08-29 14:13 142041.如果你程序是有导航条的,可以在导航条上面加多一个Done的 ... -
Mac系统下查看鼠标所在点的RGB值--数码测色计
2012-08-29 14:05 1790苹果电脑的Mac OS X系统自带鼠标所在点颜色RGB值查看工 ... -
UIView你知道多少
2012-08-21 09:49 838曾经有人这么说过,在i ... -
Objective-C内存管理总结〜CC专版
2012-08-17 18:24 815iPhone系统中的Objective-C的内存管理机制是比较 ... -
iOS内存管理
2012-08-17 18:19 28341. 内总管理原则(引用计数) IOS的对象都继承于 ... -
IOS 获取当前系统时间的年、月、日、小时、分、秒
2012-08-14 17:33 6613NSCalendar *calendar = [[NSCa ... -
IOS判断是否为数字
2012-08-13 17:59 4900判断是否为整形: - (BOOL)isPureInt:(N ... -
self.用法
2012-08-09 14:55 846MyClass.h @interface MyClass ... -
#import与@class的区别
2012-08-08 17:13 9371.import会包含这个类的所有信息,包括实体变量和方法,而 ... -
iphone图标去掉光晕效果
2012-08-07 16:53 1155图片背景是透明的 如果想去掉光晕效果,就在info.plist ... -
去掉 App Store 内图标上部高亮效果的办法
2012-08-07 16:52 887苹果默认会在 App Store 里的应用图标上半部自 ... -
继承UIView时使用xib文件布局的方法以及关键问题
2012-08-02 18:06 43871. 首先,新建一个类,继承自UIView。 2. 创建一个空 ...
相关推荐
Objective-C代码风格指南是为编程人员提供的一套编程规范,它旨在指导编程人员如何按照一致的风格来编写代码,以此提高代码的可读性和可维护性。Objective-C作为一种面向对象的编程语言,它结合了C语言的简洁性和...
本文基于Daniel的Objective-C编码风格指南,结合Apple、Google及Three20的编码规范,旨在提供一套详细的Objective-C编码标准,以提升代码的可读性和维护性。 #### 二、代码格式化 1. **指针“*”号的位置**:遵循C...
与任何编码风格指南一样,创建这个指南不仅是为了在不同的代码体之间获得高度的一致性,而且还大大提高了易读性。 虽然前一个目标很重要,因为它使工程师不必适应不同的风格约定,但当涉及到扫描其他人的代码以寻找...
《Objective-C编程:第四版》是一本针对Objective-C语言的深度指南,由Stephen G. Kochan撰写,旨在为程序员提供全面、深入的Objective-C知识体系。本书作为Developer’s Library系列的一部分,延续了该系列一贯的...
Google的Objective-C编码规范通常结合了Apple的Cocoa编码指南和Google的C++风格指南,形成了一套适用于Mac OS X平台的统一标准。遵循这些规范的开源项目,如Google Toolbox for Mac,可以作为良好的参考示例。
objective-c-style-guide, 概述 raywenderlich.com 编码约定的样式...这里样式指南概述了 raywenderlich.com.的编码惯例简介我们做这个风格指南的原因是,我们可以以在书籍。教程和初学者工具包中保持代码。这个样式指
Objective-C是C语言的超集,广泛应用于开发具有真正OS X或iOS风格的应用程序。本书不仅涵盖Objective-C的基础知识,还包括了与之相伴的苹果公司开发的Cocoa(针对OS X)和Cocoa Touch(针对iOS)工具包的介绍。 ...
该风格指南与您可能会看到的其他 Objective-C 风格指南不同,因为其重点是印刷和网络的可读性。 许多决定都是为了节省印刷空间、易读性和教程写作。 学分 这份风格指南的创建是在 Nicholas Waynik 的指导下,来自 ...
Objective-C结合了C语言的简洁性和Smalltalk风格的消息传递系统。它允许开发者创建面向对象的程序,并且在苹果生态系统中拥有悠久的历史和深厚的基础。 标题 "Objective-C Cheatsheet" 指的是一个快速参考指南,它...
Daniel’s Objective-C Coding Style Guidelines 是一套由杨德升根据 Apple 的 Cocoa 编码指南、Google 的 Objective-C 风格指南以及 Three20 的源代码风格指南总结而成的编码规范。这份文档主要关注于提高代码的...
本文档旨在提供一套详细的 Objective-C 编码规范。 #### 二、代码格式化 1. **指针符号位置** - 指针符号 “*” 应放在类型和变量名之间,例如 `NSString *varName;`。这样可以清晰地区分指针类型和非指针类型。...
**谷歌Objective-C编程风格指南中文版** Objective-C是一种强大的面向对象的编程语言,尤其在苹果的iOS和Mac OS X开发中占据主导地位。为了确保代码的一致性、可读性和可维护性,谷歌公司制定了一份详尽的Objective...
- **学习技巧**: 注意观察优秀项目的设计模式和编码风格。 **3. 多做实践** - **参与项目**: 尝试参与开源项目贡献代码,或自己动手开发个人项目。 - **挑战难题**: 解决实际问题可以加深对语言特性的理解。 **...
raywenderlich.com Objective-C编码规范这篇编码风格指南概括了raywenderlich.com的编码规范,可能有些删减或修改。介绍我们制定Objective-C编码规范的原因是我们能够在我们的书,教程和初学者工具包的代码保持优雅...
Objective-C 风格指南 ... Zarra Studios 编码风格指南 ( ) 此后,它通过与使用这些指南的其他开发人员的讨论和会议进行了更新。 建议 一般来说,我们希望像 Apple 那样格式化我们的代码。 这将使其他
纽约时报Objective-C风格指南 该样式指南概述了《纽约时报》中iOS团队的编码约定。 我们欢迎您就和反馈。 另外,。 感谢我们所有的。 介绍 以下是Apple提供的一些有关样式指南的文档。 如果此处未提及某些内容,则...
这些约定包括命名规范、编码风格等。 ### Prerequisites 学习Objective-C之前,建议具备一定的C语言基础,了解基本的数据类型、控制流结构和指针操作。 ### See Also 参考文档和教程对于学习Objective-C非常有...
这份由Daniel编写的Objective-C编码风格指南,是众多iOS开发者参考的经典文献之一,它整合了苹果官方、谷歌及Three20等多家机构的编码规范,为Objective-C开发提供了详尽的指导原则。 ##### 代码格式与布局 - **...