Objective-C 入门篇

前言

Objective-C is the primary programming language you use when writing software for OS X and iOS. It’s a superset of the C programming language and provides object-oriented capabilities and a dynamic runtime. Objective-C inherits the syntax, primitive types, and flow control statements of C and adds syntax for defining classes and methods. It also adds language-level support for object graph management and object literals while providing dynamic typing and binding, deferring many responsibilities until runtime.

Objective-C(下面简称OC)是由C语言和Smalltalk扩展出来的,是C语言的超集,最大的区别是OC是面向对象的,其火星文写法对于之前从事Java开发的同学颇感蛋疼,OC最大特点之一是使用“消息结构”而不是“函数调用”,所以在运行时执行的代码由运行环境决定,而Java是由编译器决定。个人感觉有关于IOS学习的文章相较于Android质量较低,有可能是苹果系统封闭的原因,本文侧重介绍常用的语法,通过对比Java并结合本人入门的过程和经验,帮助有需求的同学快速掌握OC基本编程,为IOS的入门奠定语言基础。下面首先是写出第一行代码,恭喜正式进入OC学习阶段。

int main(int argc, char *argv[])
{
   
    @autoreleasepool //创建自动内存释放池
    {
   
    	//打印输出
        NSLog(@"hello world ios!");
        return 0;
    }
}

下面介绍OC代码的文件扩展名:

文件扩展名 类型
.h 头文件,作用是对类、属性、变量、函数等的声明
.m 实现文件,对头文件的生命实现或者扩展
.mm 实现文件,一般是C++代码

如果实现文件需要引入头文件时,推荐使用#import,跟#include作用相同,优化了确保相同文件只会被引入一次,所以倾向用#import。

基本数据类型

包括:int float double char
类型 字节数 格式化输出
char 1 %c
int 4 %i,%x,%o
unsigned int 4 %i,%x,%o
short int 2 %hi,%hx,%ho
unsigned short int 2 %hi,%hx,%ho
long int 8 %li,%lx,%lo
unsigned long int 8 %lu,%lx,%lo
long long int 8 %lli,%llx,%llo
unsigned long long int 8 %llu,%llx,%llo
float 4 %f
double 8 %f
long double 16 %Lf

其他数据类型

id类型

可以存放任何数据类型的对象,类似Java中的Object类,其被定义为指向对象的指针(本身就是指针了),故定义比如id instance = nil;id类型是多态和动态绑定的基础。

BOOL类型

布尔值为YES/NO或1/0。Java对应是true/false

nil和Nil

nil相当于Java中的null,表示一个对象,这个对象的指针指向空。Nil是定义一个指向空的类而不是对象。

NSString(不可变字符串)

字符串是非常重要常用的,务必要掌握常用的基础用法,包括创建、截取、遍历、比较、大小写转换、搜索等,语义跟基本类似Java。

		//字符串
        NSString *str1 = @"ABC3456789";
        //拼接成新的字符串
        NSString *str2 = [str1 stringByAppendingString:@"wwww"];
        NSLog(@"str = %@", str2);
        //遍历
        for (int i = 0; i < [str2 length]; i++) {
   
            char temp = [str2 characterAtIndex:i];
            NSLog(@"字符串第 %d 位输出 %c", i, temp);
        }
        //比较
        // sEqualToString方法 :比较字符串是否完全相等,大小写不一样也无法完全匹配。
        //hasPrefixe方法:逐一匹配字符串头部。haSuffix方法:匹配字符串的尾部
        if ([str2 isEqualToString:str1]) {
   
            NSLog(@"相等");
        }
        if ([str2 hasPrefix:@"www"]) {
   
            NSLog(@"有该头部");
        }
        if ([str2 hasSuffix:@"www"]) {
   
            NSLog(@"有该尾部");
        }
        if ([str2 compare:str options:NSCaseInsensitiveSearch | NSNumericSearch] == NSOrderedSame) {
   
        }
        NSLog(@"比较结果:%d", [str2 caseInsensitiveCompare:str1]);
        //大小写转换
        NSLog(@"str3转大写:%@",[str2 uppercaseString]);
        NSLog(@"str3转小写:%@",[str2 lowercaseString]);
        NSLog(@"str3首字母转大写:%@",[str2 capitalizedString]);
        //字符串截取
        NSRange rang = NSMakeRange(2, 2);
        NSLog(@"str3截取:%@",[str2 substringWithRange:rang]);
        //搜索
        NSRange rang1 = [str2 rangeOfString:@"www"];
        NSLog(@"location: %d,length: %d",rang1.location,rang1.length);
        //替换
        //全部替换
        NSString *str3 = [str2 stringByReplacingOccurrencesOfString:@" " withString:@"@"];
        NSLog(@"替换后字符串为%@", str3);
        //局部替换
        NSString *str4 = [str2 stringByReplacingCharactersInRange:rang withString:@"met"];
        NSLog(@"替换后字符串为%@", str4);
NSMutableString(可变字符串)

创建对象的基本写法是[[NSMutableString alloc]init],*号代表对象,[]代表方法调用,只能通过类或者对象才能调用。[NSMutableString alloc]类似Java中new得到一个对象,然后再调用init初始化方法。

		//创建对象并初始化
		NSMutableString *mStr = [[NSMutableString alloc]init];
        //appendstring:向字符串尾部添加一个字符串。
        //appendFormat:向字符串尾部添加多个类型的字符串,可以添加任意数量与类型的字符串。
        [mStr appendString:@"hello world!"];
        NSLog(@"字符串创建%@", mStr
  • 27
    点赞
  • 111
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值