ios学习基础篇一
搜集的不错的oc学习资料
大概总结:
http://my.oschina.net/luoguankun/blog/208526
详细教程:
http://www.w3cschool.cc/ios/ios-objective-c.html
ios不同于java平台下的一些细节:
、 id: Objective-C有一种比较特殊的数据类型是id。你可以把它理解为“随便”。 在Objective-C里,一切东西都是指针形式保存,你获取到的就是这个对象在内存的位置。那么id就是你知道这个位置,但是不知道里面是啥的时候的写法。 、 同一个数组可以保存不同的对象: 比如一个数组NSArray,这种数组里面可以保存各种不同的对象,比如这个数组里: myArray <—-| : (float) 234.33f : @”我是个好人” : (NSImage *) : @”我真的是好人” 这是一个由4个东西组成的数组,这个数组包括一个浮点数,两个字符串和一个图片。 、BOOL,YES,NO: 你可以认为YES表示C#或者Java里的true,NO表示false。而实际上YES是1,NO是0,BOOL本身就是个char。 、IBOutlet、IBAction是啥玩意,总能看到。 这两个东西其实在语法中没有太大的作用。如果你希望在Interface Builder中能看到这个控件对象,那么在定义的时候前面加上IBOutlet,在IB里就能看到这个对象的outlet,如果你希望在Interface Builder里控制某个对象执行某些动作,就在方法前面加上(IBAction)。 而这两个东西实际上和void是一样的。 、nil。 Objective-C里的NULL(空)就这么写,表示空指针。 、为什么是@”字符串”而不是”字符串” 前面加上@符号,编译器在编译的时候会在程序中给你留出位置,这样才能保证这个字符串不会丢失。反正记住,如果你要想把某些字符串写死在程序里,就要用@”字符串”,如果忘了用@,程序应该会出错。 superzhou大侠指正: 、为什么是@”字符串”而不是”字符串” ”字符串”是C的字符串,@”"是把C的字符串转成NSString的一个简写. 在需要NSString的地方才需要这个转化,例如NSLog里面. 在需要C string的地方,还是用”字符串”的. 另外,@”"这个转换是不支持中文的.例如NSLog(@”字符串”); 是一定输出不了中文的. Objective-C 2.0 Objective-C .0是Leopard新增加的一门语言,其实和原来的Objective-C是一样的。主要是增加了属性。详细的内容这里不写了,可以参阅Allen Dang的这篇文章,写的很明白。 :NS****
老乔当年被人挤兑出苹果,自立门户的时候做了个公司叫做NextStep,里面这一整套开发包很是让一些科学家们喜欢,而现在Mac OS用的就是NextStep这一套函数库。 这些开发NextStep的人们比较自恋地把函数库里面所有的类都用NextStep的缩写打头命名,也就是NS****了。比较常见的比如: ◆NSLog ◆NSString ◆NSInteger ◆NSURL ◆NSImage …
object-c:类的定义和实现:
:先说说类的定义形式
先写一个kids.h文件定义这个类: @interface Kids: NSObject { NSString *kidName; NSString *kidAge; } -(BOOL) isCaughtKid:; @end 再写一个kids.m文件实现: #import “kids.h” @implementation Kids -(void) init { kidName=@”mykid”; kidAge=@””; } -(BOOL) isCaughtKid:{ return YES; } @end 注:'-'表示这个函数是实例函数(类似非静态函数),'+'表示这个函数是类函数(类似静态函数) :一个方法如何传递多个参数? 一个方法可以包含多个参数(参数用空格隔开),不过后面的参数都要写名字。
多个参数的写法 (方法的数据类型) 函数名: (参数1数据类型) 参数1的数值的名字 参数2的名字: (参数2数据类型 ) 参数2值的名字 …. ; 举个例子,一个方法的定义: -(void) setKids: (NSString *)myOldestKidName secondKid: (NSString *) mySecondOldestKidName thirdKid: (NSString *) myThirdOldestKidName;
实现这个函数的时候: -(void) setKids: (NSString *)myOldestKidName secondKid: (NSString *) mySecondOldestKidName thirdKid: (NSString *) myThirdOldestKidName{ 大儿子 = myOldestKidName; 二儿子 = mySecondOldestKidName; 三儿子 = myThirdOldestKidName; }
调用的时候: Kids *myKids = [[Kids alloc] init]; [myKids setKids: @”张大力” secondKid: @”张二力” thirdKid: @”张小力”];
object-c:的一些基本用法
1减号(或者加号)
减号表示一个函数、或者方法、或者消息的开始,怎么说都行。
比如c#中,一个方法的写法可能是:
private voidhello(bool ishello)
{
//OOXX
}
用Objective-C写出来就是
-(void) hello:(BOOL)ishello
{
//OOXX
}
挺好懂的吧?
不过在Objective-C里面没有public和private的概念,你可以认为全是public。
而用加号的意思就是其他函数可以直接调用这个类中的这个函数,而不用创建这个类的 实 例。
中括号
中括号可以认为是如何调用你刚才写的这个方法,通常在Objective-C里说“消息”。
比如C#里你可以这么写:
this.hello(true);
在Objective-C里,就要写成:
[selfhello:YES]; 、为什么是@”字符串”而不是”字符串”
”字符串”是C的字符串,@”"是把C的字符串转成NSString的一个简写.
在需要NSString的地方才需要这个转化,例如NSLog里面.
在需要C string的地方,还是用”字符串”的.
另外,@”"这个转换是不支持中文的.例如NSLog(@”字符串”); 是一定输出不了中文的.
对象初始化:
两种创建新对象的方法:
[类名 new]
[[类名 alloc] init]
这两种方法是等价的,但cocoa的惯例是使用后者。
alloc在为对象分配空间的同时,将这块内存初始化为0;
Init方法:初始化实例变量,使对象处于可用状态。[返回类型为id, 返回的值描述了被初始化的对象]
使用new创建新对象时,系统要完成两个步骤:
1. 为对象分配内存,即对象获得一个用来存放其实例变量的内存块;
2. 自动调用init方法,让该对象处于可用状态。
NSLog:
规则:
%d, %i 整数
%u 无符整形
%f 浮点/双字
%x, %X 二进制整数
%o 八进制整数
%zu size_t%p 指针
%e 浮点/双字 (科学计算)
%g 浮点/双字
%s C 字符串
%.*s Pascal字符串
%c 字符
%C unicha
r%lld 64位长整数
(long long)%llu 无符64位长整数
%Lf 64位双字
实例:
NSLog (@"this is a test");
NSLog (@"string is :%@", string);
NSLog (@"x=%d, y=%d", 10, 20);
但是下面的写法是不行的:
int i = 12345;
NSLog( @"%@", i );
原因是, %@需要显示对象,而int i明显不是一个对象,要想正确显示,要写成:
int i = 12345;
NSLog( @"%d", i );
NSString *tempA = @"123";
NSString *tempB = @"456";
1,字符串拼接
NSString *newString = [NSString stringWithFormat:@"%@%@",tempA,tempB];
2,字符转int
int intString = [newString intValue];
3,int转字符
NSString *stringInt = [NSString stringWithFormat:@"%d",intString]
4,字符转float
float floatString = [newString floatValue];
5,float转字符
NSString *stringFloat = [NSString stringWithFormat:@"%f",intString];
ios学习基础篇一的更多相关文章
- iOS系列 基础篇 04 探究视图生命周期
iOS系列 基础篇 04 探究视图生命周期 视图是应用的一个重要的组成部份,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻. 以视图的四种状态为基础,我们来系统了解一下视 ...
- iOS系列 基础篇 06 标签和按钮 (Label & Button)
iOS系列 基础篇 06 标签和按钮 (Label & Button) 目录: 标签控件 按钮控件 小结 标签和按钮是两个常用的控件,下面咱们逐一学习. 1. 标签控件 使用Single Vi ...
- iOS系列 基础篇 07 Action动作和输出口
iOS系列 基础篇 07 Action动作和输出口 目录: 1. 前言及案例说明 2. 什么是动作? 3. 什么是输出口? 4. 实战 5. 结尾 1. 前言及案例说明 上篇内容我们学习了标签和按钮 ...
- iOS系列 基础篇 08 文本与键盘
iOS系列 基础篇 08 文本与键盘 目录: 1. 扯扯犊子 2. TextField 3. TextView 4. 键盘的打开和关闭 5. 打开/关闭键盘的通知 6. 键盘的种类 7. 最后再扯两句 ...
- iOS系列 基础篇 09 开关、滑块和分段控件
iOS系列 基础篇 09 开关.滑块和分段控件 目录: 案例说明 开关控件Switch 滑块控件Slider 分段控件Segmented Control 1. 案例说明 开关控件(Switch).滑块 ...
- 【IOS学习基础】NSObject.h学习
一.<NSObject>协议和代理模式 1.在NSObject.h头文件中,我们可以看到 // NSObject类是默认遵守<NSObject>协议的 @interface N ...
- iOS系列 基础篇 03 探究应用生命周期
iOS系列 基础篇 03 探究应用生命周期 目录: 1. 非运行状态 - 应用启动场景 2. 点击Home键 - 应用退出场景 3. 挂起重新运行场景 4. 内存清除 - 应用终止场景 5. 结尾 本 ...
- iOS系列 基础篇 05 视图鼻祖 - UIView
iOS系列 基础篇 05 视图鼻祖 - UIView 目录: UIView“家族” 应用界面的构建层次 视图分类 最后 在Cocoa和Cocoa Touch框架中,“根”类时NSObject类.同样, ...
- Docker虚拟化实战学习——基础篇(转)
Docker虚拟化实战学习——基础篇 2018年05月26日 02:17:24 北纬34度停留 阅读数:773更多 个人分类: Docker Docker虚拟化实战和企业案例演练 深入剖析虚拟化技 ...
随机推荐
- Python多进程multiprocessing使用示例
mutilprocess简介 像线程一样管理进程,这个是mutilprocess的核心,他与threading很是相像,对多核CPU的利用率会比threading好的多. import multipr ...
- NOIP2012-普及组复赛-第一题-质因数分解
题目描述 Description 已知正整数n是两个不同的质数的乘积,试求出两者中较大的那个质数. 输入输出格式 Input/output 输入格式:输入只有一行,包含一个正整数n.输出格式:输出只 ...
- 神经网络工具箱nntool的使用方法
关于如何使用nntool神经网络工具箱进行“数据训练”的方法: 1. 在命令窗口键入nntool命令打开神经网络工具箱: 2. 点击Import按钮两次,分别把输入向量和目标输出加入到对应的窗口([I ...
- ORA-39070
背景介绍: 项目以前建立的库,表空间文件文件比较多,问了一下dba,了解到表空间建立很多没有带来优惠(都在一块磁盘上),效率也不会提高:现在要进行新库的迁移(目前使用的是asm磁盘组rac集群),正好 ...
- html让背景透明
style="z-index:100000;display:block;position:absolute;filter:progid:DXImageTransform.Microsoft. ...
- 九、oracle 事务
一.什么是事务事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml(数据操作语言,增删改,没有查询)语句要么全部成功,要么全部失败.如:网上转账就是典型的要用事务来处理,用于保证数据的 ...
- oracle 备份操作流程
Oracle 库表导出步骤 例如,要导出wcsr用户下的所有表,已知用户名/密码:wcsr/wcsr_woer 首先打开cmd.exe 其次创建备份目录,最好目录不包含空格和中文名 md d:\ora ...
- php curl调用相关api
一.基本步骤 1.本次模拟是php的相关post请求,可通过CURLOPT_CUSTOMREQUEST设定相关POST.GET.PUT.DELETE相关适应REST API 2.相关重要的是curl_ ...
- 批处理 取得当前路径 %CD%
在DOS的批处理中,有时候需要知道当前的路径.在DOS中,有两个环境变量可以跟当前路径有关,一个是%cd%, 一个是%~dp0. 这两个变量的用法和代表的内容一般是不同的. 1. %cd% 可以用在批 ...
- LeetCode OJ 86. Partition List
Given a linked list and a value x, partition it such that all nodes less than x come before nodes gr ...