Objective-C
文章平均质量分 66
乞力马扎罗的雪CYF
一只不孤独的猿。
展开
-
Objective-C学习笔记(十五)——实例化对象
我们在上一篇博客中讨论了如何在OC项目中新建类,创建类的目的是为了实例化对象。现在我们来讨论如何实例化对象。(1)在新建一个类的基础上,在main.m文件加入头文件:#import “People.h”(2)例子中分别用同一个类创建三个对象,其中 p1,p2,p3是三个对象。int main(int argc, const char * argv[]) { @a原创 2015-07-23 20:18:24 · 2971 阅读 · 0 评论 -
Objective-C学习笔记(一)——OC语言的特点
Objective_C语言的特点:(1)支持C语言语法,是一个高效的编程语言;(2)作为C语言面向对象的扩展,支持完整的面向对象编程特性;(3)简洁而优雅的编程风格使得编写程序与阅读代码都变得格外清晰;(4)兼容性好,可以在同一个项目中同时使用 OC与C++,也可以在项目中导入由C,C++等语言编写的库文件。原创 2015-07-22 15:58:45 · 2450 阅读 · 0 评论 -
Objective-C实现Mac终端日历程序(cal命令)
当我们在Mac下打开终端,然后输入以下命令:看看会发生什么?(1)cal:输出当年当月的日历;。(2)cal 1 2016 :输出指定年份和月份的日历;。(3)cal 2015 :输出该年的日历;。(4)cal -m 10 :输出当年指定月份的日历;。 可以看到,cal命令是Mac下查看日历(Calendar)的一个原创 2015-11-10 15:30:49 · 4695 阅读 · 7 评论 -
Objective-C 二维数组详解
在实际的项目开发中,二维数组也是常常用到的数据结构。OC中的二维数组也是通过一维数组来建立的,今天我们来详解一下如何在OC中使用二维数组。【使用NSArray初始化二维数组】使用NSArray初始化的一维数组和二维数组都是不可变数组。#import int main(int argc, const char * argv[]) { @autoreleasepool {原创 2015-11-02 09:50:26 · 14133 阅读 · 0 评论 -
Objective-C类型推断
#import #import "AppDelegate.h"#import "Man.h"@interface A : NSObject@end@implementation A@end@interface AA : A@end@implementation AA@endint main(int argc, char * argv[]) {原创 2015-09-22 13:41:51 · 1300 阅读 · 0 评论 -
Objective-C中初始化方法的实现与作用
OC中的初始化方法就是init方法,可以完成属性或者变量的初始化操作。从“某种”角度来说,有点类似构造方法,但注意,其实不是构造方法,只是变量初始化的作用类似而已。(1)代码如下:#import #import "AppDelegate.h"//类的声明;@interface Hello : NSObject{ //这个括号内定义的变量相当于是私有的,外界不能访问; i原创 2015-09-20 22:38:27 · 1507 阅读 · 0 评论 -
Objective-C使用静态方法创建字符串对象
我们不仅可以直接通过给字符串直接赋值的方式来创建一个NSString对象,还可以使用NSString的静态方法(类方法)来创建对象。实现如下:(1) NSString *str = [NSString stringWithFormat:@"nihao:%d",100]; NSLog(@"%@",str);(2)我们点开进入stringWithFormat()方法,可以看到在NSStr原创 2015-09-20 22:04:05 · 1805 阅读 · 0 评论 -
Objective-C学习笔记(二十五)——属性与方法的继承学习
继承是面向对象中除了封装之后的第二大特性。继承使类之间可以不断的扩展,因此会有父类与子类的关系。子类继承自父类,可以从父类中继承属性和方法。下面我们来看一下。(一)属性的继承。(1)新建MyClass类,继承自NSObject类;再新建MySubClass类,继承自MyClass类。此时对于MySubClass来说,MyClass就是基类,也是父类,自己就是子类。在父类MyClass中声明原创 2015-07-24 20:15:42 · 1678 阅读 · 0 评论 -
Objective-C学习笔记(二十三)——面向对象之封装
OC作为一门面向对象的语言,封装是一个重要的特点,在之前的代码中多少都有封装的影子,现在我们来仔细讨论下封装。封装用简单的话来说就是:内部有成员变量来表示这个类的特征,对外暴露方法供外界调用。(一)代码一:(1)首先创建一个MyClass类,在MyClass.h中声明一个属性和一个打印的方法:@property(nonatomic,strong) NSString *classNam原创 2015-07-24 16:39:35 · 1466 阅读 · 0 评论 -
Objective-C学习笔记(二十一)——函数的返回值与参数类型
我们在之前的博客中涉及到的函数都没有参数,同时返回值也为void,即不需要返回值。但是在以后的开发中,函数返回值和参数是必须涉及到的。所以现在我们来讨论这个问题。我们还是以People类为例。(一)有返回值,并且一个参数(1)在People.h中声明一个对象方法。注意:该方法中“-”是函数类型;“第一个int”是返回值类型;“ showA:”是函数名;"第二个int"是参数的类型,“a”是原创 2015-07-24 12:28:05 · 7908 阅读 · 0 评论 -
Objective-C学习笔记(二十)——成员变量对对象方法与类方法的可见性分析
之前在学习C++,或者java的时候,都会遇到一个可见性的问题,这篇文章我们来讨论声明的成员变量对对象方法(减号方法)和类方法(加号方法)的可见性问题。(一)代码一:成员变量对减号方法可见,对加号方法不可见。在People.m中声明一个成员变量:NSString *_peopleName;然后发现可以在减号方法中访问该变量,在加号方法中不可以访问该变量。-(void)ObjectSho原创 2015-07-24 10:34:22 · 1915 阅读 · 1 评论 -
Objective-C高级编程——KVO(一)
【基本概念】 键值观察是一种使对象获取其他对象的特定属性变化的通知机制。控制器层的绑定技术就是严重依赖键值观察获得模型层和控制器层的变化通知的。对于不依赖控制器层类的应用程序,键值观察提供了一种简化的方法来实现检查器并更新用户界面值。 与NSNotification不同,键值观察并没有所谓的中心对象来为所有观察者提供变化通知。取而代之的,当有变化发生时,通知被直接发送至原创 2015-10-21 22:35:07 · 2094 阅读 · 0 评论 -
Objective-C学习笔记(二)——OC基本语法概述
1.源代码文件扩展名对比 头文件 实现文件C语言 .h .cC++语言 .h .cppOC语言 .h .mOC&C++ .h .mm3.类的声明,注意和J原创 2015-07-22 16:45:47 · 2332 阅读 · 0 评论 -
Objective-C学习笔记(三)——用Objective-C编写第一个程序:Hello,World!
无论是哪一个程序员,或者是学习哪一门计算机语言,写的第一个程序基本上就是Hello World。今天我们用OC来实现第一个程序:Hello World。 在Xcode中选择新建一个项目,在对话框中选择OS X,下方选择Application, 右侧选择Command line tool,表示使用的是命令行程序,点击Next;在下一个对话框中输入项目名称,并选择开发语言,可以看到在这原创 2015-07-22 19:59:34 · 2295 阅读 · 0 评论 -
Obkective-C学习笔记(十四)——如何在项目中新建一个类
在Xcode中新建一个项目的时候,会自动生成一个.m文件,在该文件中已经有一个main主函数。当然一个项目有一个类是不够的,我们应该要学会如何在Xcode中新建一个类。具体步骤如下:(1)先在Xcode中新建一个一个OC的项目,使用Command line tool,当前项目名称为OC_Class01.右键OC_Class01文件夹(或者组合键 command+N),出现如图对话框。。原创 2015-07-23 19:52:49 · 1938 阅读 · 0 评论 -
Objective-C学习笔记(十三)——函数的声明与调用
OC中的函数语法也同样与C类似。需要声明,调用等等。具体实现看一下代码:(一)代码一:int area(int x,int y);//在此处声明函数;int main(int argc, const char * argv[]) { @autoreleasepool { int a=3; int b=4; int原创 2015-07-23 15:20:43 · 2915 阅读 · 0 评论 -
Objective-C学习笔记(十二)——switch多分支语句的使用
其实同C语言和Java,OC中也是有switch多分支语句,也可称之为开关语句。语法也是极为相似的。下面我们来慢慢研究switch。(一)代码一:int main(int argc, const char * argv[]) { @autoreleasepool { int i=6; switch (i) {原创 2015-07-23 14:29:07 · 10542 阅读 · 0 评论 -
Objective-C学习笔记(十一)——break和continue的使用方法
无论是C,Java还是OC,break和continue都是配合循环来使用的,break和continue可以打破循环执行的过程,提前退出循环,但是使用上又有一定的区别。下面我们来慢慢分析。(1)代码一:int main(int argc, const char * argv[]) { @autoreleasepool { for (int i=0;原创 2015-07-23 13:46:12 · 5324 阅读 · 0 评论 -
Objective-C学习笔记(十)——循环语句for和do-while的使用
在OC中,除了while这种循环方式外,还有另外for循环和do-while循环,它们在不同的业务逻辑下会有不同的作用。可以和C语言和Java对比着学习。(一)代码一:int main(int argc, const char * argv[]) { @autoreleasepool { for (int i = 0; i < 5; i++) {原创 2015-07-23 11:28:00 · 7321 阅读 · 0 评论 -
Objective-C学习笔记(九)——循环语句while的使用方法
我们在上一篇博客中能看到,在OC中如果使用goto语句和if条件判断,可以完成循环的效果,并可以实现较为方便的跳转。但是相对来说,还是比较麻烦的,也并不常用。程序员常常是会偷懒的,所以发明了更为方便的循环语句——while。(一)代码一:int main(int argc, const char * argv[]) { @autoreleasepool {原创 2015-07-23 10:47:54 · 3903 阅读 · 0 评论 -
Objective-C学习笔记(八)——高级跳转语句goto使用方法
在我们学习C语言的时候,碰到一种程序跳转,叫做goto,goto可以跳到程序的任意地方。又到了后来,学习了程序设计方法学,不知哪一位计算机前辈(貌似是迪杰斯特拉),认为goto使得程序的跳转过于随意,使代码的逻辑变得混乱,所以不推荐使用goto。现在来到OC,在OC中也有goto,为了学习的完整性,我们也来学习下这种相对高级的跳转。(一)代码一:int main(int argc, con原创 2015-07-23 10:09:49 · 10097 阅读 · 4 评论 -
Objective-C学习笔记(七)——if-else条件判断语句
程序在默认情况下,是一行一行顺序往下面执行。但是我们的程序可能会面对复杂的情况,不可能永远是顺序执行的,所以就要引入条件判断语句,改变程序运行的轨迹。现在我们来学习一下OC中简单的条件判断——if-else语句。我们使用代码片段来进行学习。(一)代码一:int main(int argc, const char * argv[]) { @autoreleasepool {原创 2015-07-23 09:28:59 · 7465 阅读 · 0 评论 -
Objective-C学习笔记(六)——运算符之一元运算符
OC中的运算符分为一元运算符,二元运算符和三元运算符,这和C语言是极为类似的。本篇文章主要来聊一聊OC中的一元运算符。一元运算符主要分为自加运算符和自减运算符。两者的思路是一样的,所以主要讨论自加 ++运算。下面分为几个代码片段来分析:(1)代码一:int main(int argc, const char * argv[]) { @autoreleasepool {原创 2015-07-22 23:55:26 · 1856 阅读 · 0 评论 -
Objective-C学习笔记(五)——数据类型与限定词
如同其他任何的编程语言一样,想要更深入的学习,必须要了解该门语言的数据类型与限定词。OC的数据类型如下:(1)int:整型; int a; int b=2; int c=a;(2)float: 浮点型; float a; float b=0.1; float c=a;(3)double:双精度:double num; double nu原创 2015-07-22 21:57:54 · 1753 阅读 · 0 评论 -
Objective-C学习笔记(四)——OC实现最简单的数学运算
本篇帖子会实现使用OC的最简单的加减乘除运算,学习的知识点包括变量定义,运算方法,格式化输出等概念。主要学习基本的语法,其实和C语言的语法还是比较类似的。具体代码只要写在main方法中就行了。详细代码如下:#import int main(int argc, const char * argv[]) { @autoreleasepool { i原创 2015-07-22 21:24:39 · 2808 阅读 · 0 评论 -
Objective-C Foundation框架实践——NSString(一)
我们知道OC可以和C进行混合编程,同样的,C的字符串和OC的字符串也是非常的类似。在某些情况下,需要进行相互转换。现在我们来实现一下:#import int main(int argc, const char * argv[]) { @autoreleasepool { char *str1 = "Hello"; NSString *str2 = @"Wo原创 2015-10-18 09:51:36 · 1547 阅读 · 0 评论 -
Objective-C Foundation框架实践——NSString(二)
对于NSString,还有很多实用的方法,比如:大小写的转换,前后缀的匹配,字符串的拼接,格式化字符串的等等。下面我们来看一下:#import int main(int argc, const char * argv[]) { @autoreleasepool { char *str1 = "Hello"; NSString *str2 = @"Wo原创 2015-10-18 10:39:43 · 1495 阅读 · 0 评论 -
Objective-C Foundation框架实践——NSString(三)
#import int main(int argc, const char * argv[]) { @autoreleasepool { ////////////////////////////////////////////////////////////////////// //判断两个字符串是否相同; NSString *string1 =原创 2015-10-18 12:33:23 · 1420 阅读 · 0 评论 -
对于Objective-C新建类的理解
如何在一个OC的工程中自己新建一个类呢。当然我们可以通过直接新建一个Cocoa Touch Class文件,然后就能自动的新建类。在没有学习开发iOS项目之前,如何自己手动创建一个。(1)#import #import "AppDelegate.h"//类的声明;@interface Hello : NSObject- (void)sayHello;@end//类的实现;原创 2015-09-20 22:20:28 · 1356 阅读 · 0 评论 -
Objective-C学习笔记(十八)——对象方法和类方法的声明,定义及调用
在程序设计中,函数的使用无疑大大简化了代码的编写,提高代码运行的效率,减少重复代码。所以现在我们来详细研究一下方法。本例子还是以People类为例。(一)代码一:(1)先在People.h中声明一个方法,该方法为对象方法,也就是普通方法,前面是一个减号。-(void)show;(2)在People.m中实现该方法:-(void)show{ NSLog(@"原创 2015-07-24 09:08:39 · 1992 阅读 · 0 评论 -
Objective-C学习笔记(十七)——成员变量和属性详解
上一篇博客简单讲解了OC中的成员变量的概念,说到成员变量,就不得不提属性。我们按照代码片段来讲解。《代码一》:(1)在People.h中声明一个成员变量*_peopleName,以及该成员变量对应的属性:*peopleName, 一般成员变量最好加下划线,属性不加下划线。People.h 的代码如下:#import @interface People : NSObject{原创 2015-07-23 23:35:18 · 1814 阅读 · 0 评论 -
Objective-C学习笔记(十六)——成员变量
在以前学习C++,Java面向对象语言的时候,类Class中会有成员变量这个概念,同时这个成员变量也可称之为这个类的属性,我们成员变量和属性当成一回事。但是来到OC中,情况就完全不同了。成员变量和属性是两个截然不同的概念,我们来慢慢研究。(1)在新建完类后,在People.h中加入如下代码:@interface People : NSObject{ NSString *原创 2015-07-23 21:20:16 · 1516 阅读 · 0 评论 -
Objective-C Block闭包概念解析
Block闭包是OC中比较高级的概念。我们通过简单的代码来理解一下:#import #import "AppDelegate.h"//代码块的声明;返回值int,参数类型int、int;int (^max)(int,int);typedef void (^SayHello)();int main(int argc, char * argv[]) { //代码块的赋值;原创 2015-09-22 11:54:10 · 1626 阅读 · 0 评论 -
Objective-C字典使用详解
#import #import "AppDelegate.h"int main(int argc, char * argv[]) { //类似Java中的Map,即键值对; NSDictionary *dict = @{@"name":@"zhangsan",@"age":@23}; //打印出整个字典; NSLog(@"%@",dict); //取出字原创 2015-09-22 11:11:20 · 1866 阅读 · 0 评论 -
Objective-C中get/set方法初探(2)
OC的属性的get,set方法也可以隐式调用:(1)People.h实现如下:#import @interface People : NSObject{ int _age;}@property(nonatomic) int age;-(void) setAge:(int)age;-(int) age;@end(2)People.m实现如下:#import原创 2015-09-20 23:15:53 · 1622 阅读 · 0 评论 -
Objective-C学习笔记(二十八)——对alloc和init的理解
我们在OC中进行对象的初始化的时候,往往会用到两个方法,就是alloc和init。这到底是两个什么方法呢?(1)在OC项目中新建一个类People.然后在main.m中进行初始化。注意People类是继承自NSObject的。初始化People对象的代码如下:People *people = [[People alloc] init];(2)按住Command和鼠标左键,进入alloc原创 2015-09-18 11:00:12 · 2110 阅读 · 2 评论 -
Objective-C学习笔记(二十七)——方法的重载与重写
学习面向对象编程,不得不提的一个特性就是多态,多态实现的方式就是方法的重写与重载。首先声明一下,在OC中是没有方法的重载的。(一)方法重载 OC中没有重载这个概念,但是我们要知道重载是干什么的。重载就是在一个类中有多个方法,这几个方法的方法名相同,但是参数的个数或者类型不同,在调用的时候,编译器会根据传入的不同参数来决定调用哪个方法。(二)方法重写原创 2015-07-24 23:54:49 · 4524 阅读 · 0 评论 -
Objective-C学习笔记(二十六)——成员变量的继承学习
OC中不仅属性和方法可以被继承,而且在某些访问修饰符的修饰下,成员变量也可以被继承。其中@public,@protected修饰的可以被继承。本次我们研究下保护类型的继承。本例子中父类是MyClass,子类是MySubClass.(1)在MyClass.h中声明一个保护类型的变量:{ int _classInt;//没有加访问修饰符,默认是@protected,受保护的,类内可以访原创 2015-07-24 21:02:40 · 2310 阅读 · 0 评论 -
Objective-C学习笔记(二十四)——成员变量的访问修饰符学习
在OC中有四类访问修饰符,分别为@public,@protected,@private,@package,不同的访问修饰符对外界有不同的可见性。现在我们来一一讲解。我们以新建MyClass类。(一)@public:公有:在类内和类外都可以被使用,且可以被继承;(1)在MyClass.h中声明一个公有的成员变量。{ @public int _classInt;}(2)原创 2015-07-24 19:00:54 · 2265 阅读 · 0 评论 -
Objective-C学习笔记(二十二)——初始化方法init的重写与自定义
初学OC,对init这个方法不是很了解。我们现在来分别对init方法进行重写以及自定义,来加深对他的了解。本例子也是用Person类来进行测试。(一)重写init方法。(1)在Person.h中声明init方法:-(instancetype)init;(2)在Person.m中声明成员变量,以及写一个打印成员变量的函数,并且重写init初始化方法:在重写的方法中,对成员变量进行了赋原创 2015-07-24 15:36:24 · 6831 阅读 · 0 评论