深入浅出Objective-C
文章平均质量分 90
空杯子_
一个非著名互联网开发者
展开
-
Objective-C语法之异常处理
Objective-C的异常比较像Java的异常处理,也有@finally的处理,不管异常是否捕获都都要执行。异常处理捕获的语法: @try { } @catch (NSException *exception) { } @finally { } @catch{} 块 对异常的捕获应该先细后粗,原创 2012-07-04 09:18:14 · 13490 阅读 · 2 评论 -
Objective-C语法之类和对象
1、类和方法下图中是一段的类声明的语法展示,声明了一个叫做 MyClass 的类,它继承于根类:NSObject。(根类可以被所有的其他类直接或间接继承。)下图是一个方法的语法展示,方法的声明由以下几个部分构成:方法类型标识符,返回类型,一个或多个方法签名关键字,以及参数类型和名称。类的实体变量的访问权限:对应的代码:@interface Worker : NSObject{ char原创 2012-07-02 17:19:42 · 18910 阅读 · 6 评论 -
Objective-C语法之Objective-C语言和iOS系统(简介,语法,系统结构)
简介Objective-C,是扩充C的面向对象编程语言。它主要使用于Mac OS Objective-C,通常写作ObjC和较少用的Objective C或Obj-C,是在C的基础上,加入面向对象特性扩充而成的编程语言。目前,Objective-C主要应用于Mac OS X和iOS这两个NeXTSTEP的衍生系统,而在NeXTSTEP和OpenStep中它更是基本语言。Objective-C可以在原创 2012-06-11 20:25:55 · 11411 阅读 · 2 评论 -
Objective-C语法之字符串NSString
Objective-C里核心的处理字符串的类就是NSString和NSMutableString这两个类,这两个类完成了Objective-C中字符串大部分功能的处理。这两个类的最主要的区别是NSString创建赋值后不能动态修改长度和内容,除非给重新赋值。而NSMutableString类似与链表的,在创建赋值后可以进行修改长度,插入,删除等操作。注:以下代码运行环境是:XCode 4.3.2原创 2012-06-14 14:17:26 · 31639 阅读 · 8 评论 -
Objective-C语法之基本数据类型
本篇博客主要介绍基本数据类型的长度,基本数据类型在Oc的数组中如何时候,还有其他数据类型的相互转换等。为了演示基本数据类型的例子,我们新建一个iPhone项目类做例子1、新建项目为了方便,我们新建一个Single View Application 。输入项目名称 BaseTypeProduct Name: 指产品名称 ,类似于项目名称。Company Identifier: 公司标识符,一般命名原创 2012-06-13 14:31:41 · 27387 阅读 · 8 评论 -
Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id)等
对象在运行时获取其类型的能力称为内省。内省可以有多种方法实现。判断对象类型-(BOOL) isKindOfClass: classObj判断是否是这个类或者这个类的子类的实例-(BOOL) isMemberOfClass: classObj 判断是否是这个类的实例ps:本篇新建的类主要用于熟悉本篇内容设计,未考虑内存管理因素。我们试试这两个方法的使用。1、新建Person类继承NSObject,新原创 2012-07-04 15:02:10 · 39568 阅读 · 8 评论 -
十分钟让你明白Objective-C的语法(和Java、C++的对比)
很多想开发iOS,或者正在开发iOS的程序员以前都做过Java或者C++,当第一次看到Objective-C的代码时都会头疼,Objective-C的代码在语法上和Java, C++有着很大的区别,有的同学会感觉像是看天书一样。不过,语言都是相通的,有很多共性。下面列出Objective-C语言的语法和Java,C++的对比,这样你就会很容易Objective-C的语法是怎么回事了。先目睹一下Ob原创 2012-06-05 00:02:58 · 276053 阅读 · 53 评论 -
Objective-C语法之代码块(block)的使用
代码块本质上是和其他变量类似。不同的是,代码块存储的数据是一个函数体。使用代码块是,你可以像调用其他标准函数一样,传入参数数,并得到返回值。脱字符(^)是块的语法标记。按照我们熟悉的参数语法规约所定义的返回值以及块的主体(也就是可以执行的代码)。下图是如何把块变量赋值给一个变量的语法讲解:按照调用函数的方式调用块对象变量就可以了:int result = myBlock(4); // result原创 2012-08-07 16:12:51 · 187868 阅读 · 37 评论 -
Xcode 4.4中LLVM compiler 4.0带来的Objective-C新语法特性
今年WWDC 2012苹果全球开发者大会上,苹果针对LLVM编译器都做了重大改进,新版的Xcode 4.4中的LLVM编译器升级到了4.0,给Objective-C带来了很多令人惊喜的特性。注意,下面的语法需要下载Xcode 4.4。1、枚举类型的改变老写法:typedef enum Week{ Moday, Tuesday, Wednesday, Thursday原创 2012-09-18 14:47:13 · 14160 阅读 · 9 评论 -
Objective-C语法之Category的使用
无论一个类设计的如何完美,都不可避免的会遇到没有预测到的需求,那怎么扩展现有的类呢?当然,继承是个不错的选择。但是Objective-C提供了一种特别的方式来扩展类,叫Catagory,可以动态的为已经存在的类添加新的行为。这样可以保证类的原原来的基础上,较小的改动就可以增加需要的功能。使用Category对类进行扩展时,不需要访问其源代码,也不需要创建子类,这样我们可以扩展系统提供的类。Cate原创 2012-08-09 11:31:33 · 27697 阅读 · 4 评论 -
Objective-C语法之KVO的使用
简介:上篇我们讲到了KVC,这篇我们学习KVO,全名为:Key Value Observing,直译为:基于键值的观察者。那它有什么用呢?KVO主要用于视图交互方面,比如界面的某些数据变化了,界面的显示也跟着需要变化,那就要建立数据和界面的关联。ObjC中提供的KVO就是解决这种问题的。以下用显示页面观察学生的课程名称变化的例子来说明KVO的使用。学生类命名为:Student,页面原创 2012-07-24 16:36:45 · 16471 阅读 · 7 评论 -
Objective-C语法之KVC的使用
除了一般的赋值和取值的方法,我们还可以用Key-Value-Coding(KVC)键值编码来访问你要存取的类的属性。下图来自苹果官网:如何使用KVC存取对象属性呢?看个示例1、使用KVC定义一个Student类,继承于NSObject。.h文件#import @interface Student : NSObject{原创 2012-07-20 16:18:26 · 8898 阅读 · 2 评论 -
Objective-C语法之内存管理
1、Objective-C内存管理简介: Objective-C需要自己考虑内存的管理,对于从Java, C#等语言转向Objective-C平台的程序员新手来说,这是个很大的挑战。幸运的是,如果熟悉了Objective-C的内存管理机制,手工管理内存也没有那么可怕。 Objective-C的内存管理介于C/C++和Java C#直接,不像C/C++语言内存管理全部需要程序员一手包办,也原创 2012-07-05 17:04:54 · 11545 阅读 · 4 评论 -
Objective-C语法property详解
1、简介: property是Objective-C的关键词,与@synthesize配对使用,用来让编译好器自动生成与数据成员同名的方法声明。@synthesize则是用来生成对应声明方法的实现。1.1 property的语法格式:@property (参数1,参数2)类型名字;这里的参数,主要有以下三种:setter/getter方法(assign/retain/cop原创 2012-07-19 20:44:07 · 22637 阅读 · 3 评论 -
Objective-C语法之NSArray和NSMutableArray
Objective-C的数组比C++,Java的数组强大在于,NSArray保存的对象可以是不同的对象。但只能保存对象,int ,char,double等基本数据类型不能直接保存,需要通过转换成对象才能加入数组。1、NSArray 不可变数组[array count] : 数组的长度。[array objectAtIndex 0]: 传入数组脚标的id 得到数据对象原创 2012-07-09 15:21:52 · 21486 阅读 · 0 评论 -
Objective-C语法之NSDictionary和NSMutableDictionary
Java有Map,可以把数据以键值对的形式储存起来,取值的时候通过key就可以直接拿到对应的值,方便快捷。在Objective-C语言中,词典就是做这样的事情的,和NSArray一样,一个词典对象也能保存不同类型的值,词典也分别有不可变词典和可变的词典(NSDictionary与NSMutableDictionary),前者是线程安全的,后者不是 。1、不可变词典NSDicti原创 2012-07-09 16:40:04 · 16285 阅读 · 0 评论 -
Objective-C语法之NSSet和NSMutableSet
NSSet和NSMutableSet是无序的, 但是它保证数据的唯一性。当插入相同的数据时,不会有任何效果。从内部实现来说是hash表,所以可以常数时间内查找一个数据。1、NSSet的使用[NSSet setWithSet:(NSSet *)set]; 用另外一个set对象构造[NSSet setWithArray:(NSArray *)array];用数组构造原创 2012-07-10 10:33:43 · 21355 阅读 · 0 评论 -
通过标准的Runtime API(C函数)打印UIKit中UIView的所有变量、属性以及方法
Ivar:定义对象的实例变量,包括类型和名字。objc_property_t:定义属性。叫这个名字可能是为了防止和Objective-C 1.0中的用户类型冲突,那时候还没有属性。Method:定义对象方法或类方法。这个类型提供了方法的名字(就是**选择器**)、参数数量和类型,以及返回值(这些信息合起来称为方法的**签名**),还有一个指向代码的函数指针(也就是方法的**实现**)。SEL:定义原创 2015-09-08 11:30:27 · 5276 阅读 · 2 评论