objective-c入门

Posted ZhangShuo1999

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了objective-c入门相关的知识,希望对你有一定的参考价值。

一. objective-c简介

Objective-Objective-C是C语言的严格超集--任何C语言程序不经修改就可以直接通过Objective-C编译器,在Objective-C中使用C语言代码也是完全合法的。Objective-C被描述为盖在C语言上的薄薄一层,因为Objective-C的原意就是在C语言主体上加入面向对象的特性。
扩展名内容类型
.h头文件。头文件包含类,类型,函数和常数的声明。包含头文件时,#import 选项和 #include 选项完全相同,只是它可以确保相同的文件只会被包含一次。
.m源代码文件。这是典型的源代码文件扩展名,可以包含 Objective-C 和 C 代码。
.mm源代码文件。带有这种扩展名的源代码文件,除了可以包含Objective-C和C代码以外还可以包含C++代码。仅在你的Objective-C代码中确实需要使用C++类或者特性的时候才用这种扩展名。

二. 语法

1. 字符串
大多数Objective-C通常不使用C语言风格的字符串。反之,大多数框架把字符串传递给NSString对象。NSString类提供了字符串的类包装,包含了所有你期望的优点,包括对保存任意长度字符串的内建内存管理机制,支持Unicode,printf风格的格式化工具
//使用字面量创建字符串
NSString *string_0 = @"afeixiaohuozi";
        
//使用类方法创建字符串
NSString * string_1 = [NSString string];
string_1 = @"afeixiaohuozi";//字符串赋值
      
//创建一个字符串,并且将内容设置为string
NSString * string_2 = [NSString  stringWithString:string_1];
        
//格式化创建字符串(按照格式输出)
NSString * string_3 = [NSString stringWithFormat:@"%@",string_1];
NSString * string_4 = [NSString stringWithFormat:@"hello %d %c",5,\'A\'];
        
//实例方法初始化
NSString *string_5 = [[NSString alloc] init];
 
//实例方法指定字符串
NSString *string_6 = [[NSString alloc] initWithString:string_3];
        
//实例方法创建字符串
NSString *string_7 = [[NSString alloc] initWithFormat:@"%@",string_4 ];
2. 类
Objective-C 的类规格说明包含了两个部分:定义(interface)与实现(implementation)。定义(interface)部分包含了类声明和实例变量的定义,以及类相关的方法。实现(implementation)部分包含了类方法的实际代码。
  • interface

    定义部分,清楚定义了类的名称、数据成员和方法。 以关键字@interface作为开始,@end作为结束
    @interface MyObject : NSObject { 
        int memberVar1; // 实体变量 
        id  memberVar2; 
    } 
    +(return_type) class_method; // 类方法 
    -(return_type) instance_method1; // 实例方法 
    -(return_type) instance_method2: (int) p1; 
    -(return_type) instance_method3: (int) p1 andPar: (int) p2; 
    @end
    //方法前面的 +/- 号代表函数的类型:加号(+)代表类方法(class method),不需要实例就可以调用,与C++ 的静态函数(static member function)相似。减号(-)即是一般的实例方法(instance method)。
    //Objective-C定义一个新的方法时,名称内的冒号(:)代表参数传递,不同于C语言以数学函数的括号来传递参数。Objective-C方法使得参数可以夹杂于名称中间,不必全部附缀于方法名称的尾端,可以提高程序可读性。设定颜色RGB值的方法为例:
     - (void) setColorToRed: (float)red Green: (float)green Blue:(float)blue; /* 宣告方法*/
     [myColor setColorToRed: 1.0 Green: 0.8 Blue: 0.2]; /* 呼叫方法*/
    //这个方法的签名是setColorToRed:Green:Blue:。每个冒号后面都带着一个float类别的参数,分别代表红,绿,蓝三色。
  • Implementation

    实现区块则包含了公开方法的实现,以及定义私有(private)变量及方法。 以关键字@implementation作为区块起头,@end结尾。
    @implementation MyObject {
      int memberVar3; //私有實體變數
    }
    +(return_type) class_method {
        ... //method implementation
    }
    -(return_type) instance_method1 {
        ...
    }
    -(return_type) instance_method2: (int) p1 {
        ...
    }
    -(return_type) instance_method3: (int) p1 andPar: (int) p2 {
        ...
    }
    @end
  • 创建对象

    Objective-C创建对象需通过alloc以及init两个消息。alloc的作用是分配内存,init则是初始化对象。
    MyObject * my = [[MyObject alloc] init];
    MyObject * my = [MyObject new];
    3. 枚举
    Foundation框架已经为我们提供了“统一、便捷”的枚举定义方法
    typedef NS_ENUM(NSUInteger, TTGState) {//第一个参数是类型,第二个是类型别名
        TTGStateOK = 0,
        TTGStateError,
        TTGStateUnknow
    };
    typedef NS_OPTIONS(NSUInteger, TTGDirection) {
        TTGDirectionNone = 0,
        TTGDirectionTop = 1 << 0,
        TTGDirectionLeft = 1 << 1,
        TTGDirectionRight = 1 << 2,
        TTGDirectionBottom = 1 << 3
    };

以上是关于objective-c入门的主要内容,如果未能解决你的问题,请参考以下文章

Objective-C / iOS中的加密入门[关闭]

推荐net开发cad入门阅读代码片段

将 NSData Objective-C 代码转换为 Swift 时遇到问题

Objective-C Block与函数指针比较

Objective-c:关于self = [super init]的问题

swift入门学习-与Objective-c的对比