iOS Coding style

227 阅读3分钟
//结构体名首字母大写
struct Person
{
    int age;
    char *name;
};
// 枚举类型的取值一般以k开头 后面跟上枚举类型的名称  跟上当前取值的含义
// 和结构体一样, 枚举类型的名称首字母大写
    enum Season
    {
        kSeasonSpring,
        kSeasonSummer,
        kSeasonAutumn,
        kSeasonWinter
    };
//一般情况宏名都大写, 多个单词之间用_隔开, 并且每个单词全部大写
//有得公司又要求宏名以k开头, 多个单词之间用驼峰命名
#define COUNT 6
// 注意: 类名的首字符必须大写
// 注意: 编写OC类属性的时, 建议将所有属性的名称前面都加上_

//方法名用With and
//- (int)sendMessageWithNumber:(int)number andContent:(char *)content;
@interface Iphone : NSObject

{
    @public
    float _model; // 型号  0
    int _cpu; // cup   0
    int _size; // 尺寸  0
    int _color; // 颜色  0
}

//说明,通常BOOL类型的属性的getter方法要以is开头,使用时可以用isMarried也可以用married
@property (getter=isMarried)  BOOL  married;

// 行为
/*
 setter方法:
 作用: 设置成员变量的值
 格式:
 1. setter方法一定是对象方法
 2. 一定没有返回值
 3. 一定以set开头, 并且set后面跟上需要设置的成员变量的名称去掉下划线, 并且首字母大写
 4. 一定有参数, 参数类型一定和需要设置的成员变量的类型一致, 并且参数名称就是成员变量的名称去掉下划线
*/

- (void)setSize:(int)size;
/*
 getter方法:
 作用: 获取成员变量的值
 格式:
 1. getter方法一定是对象方法
 2.一定有返回值, 而且返回值一定和获取的成员变量的类型一致
 3.方法名称就是获取的成员变量的名称去掉下划线
 4. 一定没有参数
 */

- (int)size;

@end

@implementation Iphone

- (void)setSize:(int)size;
{
     //成员变量以下划线开头的好处,就是可以区分局部变量和成员变量
    _size = size;
}

- (int)size
{
    return _size;
}

@end
//自定义类工厂方法是苹果的一个规范, 一般情况下, 我们会给一个类提供自定义构造方法和自定义类工厂方法用于创建一个对象

[[NSString alloc] init];
[NSString string];

[[NSString alloc] initWithString:<#(NSString *)#>];
[NSString stringWithString:<#(NSString *)#>];
///自定义类工厂方法
+ (instancetype)person
{
//    return [[Person alloc] init];
    // 注意: 以后但凡自定义类工厂方法, 在类工厂方法中创建对象一定不要使用类名来创建
     // self在类方法中就代表类对象, 到底代表哪一个类对象呢?
    // 谁调用当前方法, self就代表谁
    return [[self alloc] init];
}
///自定义构造方法
+ (instancetype)personWithAge:(int)age
{
//    Person *p = [[Person alloc] init];
    Person *p = [[self alloc] init];
    p.age = age;
    return p;
}

iOS 程序通常使用[[类名 alloc] init] 的方式创建对象,因为这个可以与其他initWithXX:...的初始化方法,统一来。代码更加统一

//error处理
//error: 如果读取错误, 会将错误信息保存到error中 ,如果读取正确, 就没有error = nil

    NSString *path = @"/Users/xxx/Desktop/note/lnj.txt";
    NSError *error = nil;

    // 从文件中读取字符串
    NSString *str = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
    if (error == nil) {
        NSLog(@"str = %@", str);
    }else
    {
        NSLog(@"error = %@", [error localizedDescription]);
    }
-   苹果官方推荐使用CG开头的:

    -   CGPoint
    -   CGSize
    -   CGRect
// 一般情况下用于创建单例对象的方法名称都以share开头, 或者以default开头
- (NSUInteger)retainCount
{
    // return 1;
    // 注意: 为了方便程序员之前沟通, 一般情况下不会在单例中返回retainCount = 1
    // 而是返回一个比较大得值
    return  MAXFLOAT;
}
  • 有的将浮点型float写为 20.f
  • 控件属性用weak
  • 消除魔法数字,使用枚举替换
  • 自定义分类:项目标记名Extention